問題タブ [dde]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2677 参照

vb.net - リアルタイム データをキャッシュする方法

  • 私は、Windows フォーム アプリケーション (.NET 4.0) に取り組んでいます。
  • 私のフォームには、VS2010 に含まれている Microsoft チャート コントロールを使用した「Fast Line」チャートが含まれています。
  • グラフは約 20,000 のデータポイントでいっぱいになります。
  • 私のアプリケーションは、DDE (Dynamic Data Exchange) を介してリアルタイムでサーバーから市場データの受信を開始し、それをチャートに追加します。

注:私はサーバーを制御できないため、時代遅れのテクノロジであるにもかかわらず、DDE のみを処理する必要があります。VS は DDE をサポートしなくなったので、魅力的に機能するNddeライブラリを使用しています。

最初にサーバーに接続し、アドバイス ループを作成してから、OnAdvise イベントにサブスクライブして、新しいデータの通知を受け取ります。

これで、イベント内にチャートを更新するコマンドを配置できます。

あなたはアイデアを得る。

問題:

これは、チャートがクラッシュして例外「コレクションが変更されました。列挙操作が実行されない可能性があります」をスローするまで、数秒間正常に機能します。

特定のケースでこの原因が何であるかを調査するのに多くの時間を費やしましたが、チャートが処理できるよりも速くデータを受信して​​いることが原因であるという結論に達しました。すでに大量のデータがロードされており、受信したデータを新しい DataPoint に追加し、それ自体を無効化 (更新) するには、一定の時間 (1 秒未満) が必要です。一方、サーバーは多くの場合、データ値を非常に迅速に送信します (たとえば、間に 5 ミリ秒)。だから私は次のことを試しました:

したがって、アプリケーションを一時停止して、新しいポイントを追加する前にチャートが作業を完了する時間を与えます。アプリケーションは、例外をスローする前に数分間動作するようになりました。(ただし、Sleep() の値を変更しても、それ以上は役に立ちません)

私がオンラインで見つけることができる唯一の助けは、一度に 1 つの新しいデータ値をキャッシュから解放して (チャートの動作が終了するたびに)、受信データをキャッシュ キューに入れる必要があると述べている誰かの古い投稿です。

私の質問は、これをどのように行うかです。

他の提案は大歓迎です!

0 投票する
1 に答える
650 参照

ms-word - Windows 2008 で DDE 印刷が失敗する

ローカル システム アカウントで実行されている Windows サービス アプリケーション (C++ で開発) があります。オペレーティング システムは、Windows Server 2008 Standard - Service Pack 2 - 32 ビット - 4Gb RAM です。Service Pack 3 を適用した Office 2003 も実行しています。

このサービスは RTF ファイルを取得し、DDE を使用して Microsoft Word で印刷します。ただし、Word はエラーを発行して印刷を実行できません (デスクトップとの対話を有効にするとエラーが表示されます)。エラーは

「実行時エラー '1001':

メモリが不足しています。ドキュメントを保存します。C:...\file.rtf"

スクリーンショットはこちら: http://img804.imageshack.us/img804/9550/worderror.png

以前は Windows 2003 で動作していました。

何か案が?提案?許可に関連する可能性がありますか?

0 投票する
1 に答える
587 参照

c# - DDE メッセージを Acrobat Reader に渡すときのパスの特殊文字に関する問題

問題の解決策を見つけることなく、しばらくの間問題を調査してきました。軌道に乗ることなく、グーグルも試してみました...

どんな助けでも大歓迎です!

問題は次のとおりです。

PDF ドキュメントを開いてサイレント モードで印刷する DDE コマンドを送信しています。ASCII 以外の文字が含まれている場合、パスに問題があります。認識されず、エラーがスローされます。これを回避し、Acrobat リーダーにパスを理解させるには、パス文字列をどうすればよいですか? 「ø」の代わりに「o」を試してみましたが、問題なく動作します...よろしくお願いします!

DDE メッセージを渡すためにNDdeを使用しています。

0 投票する
1 に答える
2137 参照

.net - スレッド プールを使用して .Net アプリのレンダリング層を取得した後、Excel からの DDE 呼び出しがハングするのはなぜですか?

ThreadPool を使用して .Net アプリのレンダリング層を取得すると、Excel からの非常に単純な DDE 呼び出しがハングするという非常に奇妙な問題を発見しました。この問題は、複雑な WPF アプリを Excel からの DDE 呼び出しと同時に実行すると発生しました。以下に示す数行のコードで問題を再現できました。

C# .Net アプリ

Excel DDE マクロ。

マクロを単独で実行すると、3 つのメッセージ ボックスが表示されます。C# アプリの実行中にマクロを実行しようとすると、DDEInitiate の呼び出しでハングします。C# アプリを閉じるとすぐに、Excel が復活します。メイン スレッドからレンダリング層を取得しても問題は発生しません。また、デバッガーを一時停止すると、レンダリング層を取得するための呼び出しが行われていない場合でも、マクロがハングすることにも気付きました。

この問題は、Excel 2003、.Net3.5 & .Net4 で Windows XP を使用し、Excel 2010、.Net3.5 & .Net4 で Windows 7 を使用して再現されました。

なぜこれが起こっているのですか?これは PresentationCore.dll のバグですか?

ご協力いただきありがとうございます

[アップデート]

マシンのレンダリング層を変更すると、この「ロック」が解除されるようです (後でウィンドウを少し移動する必要がありました)。NetMeeting を起動してレンダリング ティアを変更していましたが、グラフィック カードに [画面のプロパティ] でソフトウェア レンダリングを強制的に使用させることで変更できます。

0 投票する
2 に答える
2746 参照

c# - System.Windows.Automation を使用した DDE

.NET System.Windows.Automation 名前空間を使用して、古い DDE と同等のことを行うことは可能ですか?

私の要件は、.NET Windows フォーム アプリケーションからコマンド ウィンドウ (メインフレーム画面の場合もあります) 内のテキストを読み取ることです。

この目的のためにhttp://ndde.codeplex.com/を使用したほうがよいでしょうか?

0 投票する
2 に答える
1867 参照

c++ - SendMessage() WINAPI を使用して DDE サーバーに接続するとハングする

SendMessage()WINAPIを使用して DDE サーバー アプリに接続する DDE クライアント アプリがあります。SendMessage()DDE サーバーへの接続を要求しているときにハングする呼び出しに続きます。DDE クライアント アプリとサーバー アプリはどちらも VC++ です。

SendMessage()、絞首刑にされているのは何ですか?基本的WM_DDE_INITIATEに、システム内のすべてのウィンドウにウィンドウ メッセージをブロードキャストします。目的のウィンドウ (DDE サーバー) はメッセージを処理し、確認応答を返す必要があります。確認応答が受信SendMessage()されると、コールが完了し、クライアントが接続されます。

私たちの場合、それはハングし、二度と戻ってきません。その結果、DDE クライアント アプリケーションがハングします。

ネットで検索したところ、SendMessage()何度もハングアップするため、ブロードキャストに使用することは通常お勧めできません。

DDE クライアント アプリと DDE サーバー アプリのコードを持っています。

DDE サーバー ウィンドウ ハンドルを取得する方法や、DDE サーバー ウィンドウに一意の名前を割り当てる方法があれば教えてください。

これを行うことで、クライアント エンドで一意の名前から ( FindWindow()winapi を使用して) DDE サーバーのウィンドウ ハンドルを取得でき、ブロードキャストを使用する代わりに、SendMessage()ウィンドウ ハンドルを使用してメッセージを DDE サーバーに直接送信できると考えています。

DDE サーバーのウィンドウ ハンドルを取得する上記の方法が不可能または推奨されないと思われる場合は、SendMessage()winapi を使用して DDE サーバーに接続する他の方法を教えてください。

0 投票する
2 に答える
5123 参照

windows - DDE: シェルと ddeexec を介して正しく起動するアプリケーションの実装

WinWord が「.docx」ファイル タイプに応答するように、カスタムの「.qsx」ファイル タイプに正しく応答するように、DDE サーバーとして登録するアプリケーションを実装しようとしています。

すなわち

  1. アプリケーションが既に実行されていて、誰かが ".qsx" ファイルをダブルクリックした場合、既に開いているアプリケーションが DDE オープン コマンドを受け取り、関連するファイルを開くようにします。
  2. ただし、アプリケーションがまだ実行されていない場合、シェルはアプリケーションを起動し、アプリケーションとの DDE 接続を確立して、以前と同様にファイルを開くように指示する必要があります。

パート 1 は問題なく動作しています。

ただし、パート 2 では、シェルはコマンドを起動しますが、「コマンドをプログラムに送信する際に問題が発生しました」というエラーが表示されて失敗します。これは、「ShellExecute」Windows API 関数から返されるリターン コード「SE_ERR_DDEFAIL」(29) に対応します。

実際、私は「ShellExecute.exe」という名前のカスタム コンソール アプリケーションを作成しました。このアプリケーションは、explorer.exe とは無関係にこの問題を正確に再現できます。

ShellExecute.exe を実行し、「DDE サーバー」アプリが既に起動している場合、正しく動作します。「.docx」ドキュメントに対して ShellExecute.exe を実行し、WinWord が実行されていない場合、WinWord は正しく起動し、ドキュメントをロードします 「.qsx」ドキュメントに対して ShellExecute.exe を実行し、アプリが実行されていない場合、ShellExecuteEx はアプリケーションを起動しますしかし、サーバー アプリが DDE サーバーとして登録する前に、すぐに SE_ERR_DDEFAIL を返します。

何らかの理由で、WinWord の場合、ShellExecute は起動を待機しているようです。

procmon.exe を実行した状態で両方のケースを実行して、ShellExecute が WinWord.exe とケースを区別するレジストリで何を探しているかを確認しましたが、何も見つかりません。

私が本当に必要としているのは、ShellExecute アルゴリズムのソース コードです。これにより、それが WinWord では機能するのにカスタム拡張機能では機能しない理由を知ることができます。

アプリケーションを起動するために ShellExecute が行うこと、特にアプリケーションが DDE サーバーとして登録されるのを「待機」する方法を正確に詳細に説明できる人はいますか?

0 投票する
3 に答える
1509 参照

java - NetBeans は、インポートされた jdde pretty-tools jar ファイルでクラスを見つけることができません

Java で DDE を使用したいのですが、調査の結果、http://jdde.pretty-tools.com/を使用することにしました。

このプロジェクトのプログラミング プラットフォームは NetBeans です。

ただし、少し問題が発生しました。当然のことながら、jar ファイルをインポートしました。つまり、パッケージ > プロパティ > ライブラリ > JAR/フォルダーの追加を右クリックします。また、新しいライブラリを作成し、この方法でjarファイルを追加しようとしました。どちらの場合も、jar をインポートすることができ、Libraries フォルダーに jar とその jar 内のソース ファイルが表示されます。つまり、この時点まではすべてが正しく行われていました。パッケージをソースファイルにインポートしようとすると、問題が発生します。つまり、次のようになります。

この結果、DDEClientConversation がエラーとしてマークされ、「シンボルが見つかりません」というメッセージが表示されます。別のパッケージから別のjarをインポートするとすべて正常に動作するため、かなりのツールのjarファイルに奇妙な方法で問題がある可能性があると考えています。

0 投票する
0 に答える
988 参照

linux - Linuxでブラウザの現在のURLを取得するにはどうすればよいですか?

Windowsでは、単純なDDEコマンドを使用して、ほとんどのブラウザから現在のURLを簡単に取得できます。同様に、DDEを使用すると、ブラウザに別の場所に移動するように指示できます。

Linuxで同様のタスクを実行するにはどうすればよいですか?作成しているツールのブラウザが指しているURLを取得する必要があります。

Linuxに同等のDDEがないことは知っていますが、通常、コマンドラインで魔法のトリックを実行できます...

優先ブラウザ:FirefoxまたはChromeの順。

0 投票する
2 に答える
1823 参照

c# - Acrobat Reader のバージョンを確認する方法

DDE 接続文字列名を使用するには、Adobe Acrobat Reader のバージョンを確認する必要があります。

10.0 リリースでは、アドビは「DDE 命名規則を変更します。DDE サーバー名は、Acrobat と Reader で一意になりました。新しい命名規則は次のとおりです。Acroview{A|R}{MajorVersion} ここで、{A|R} はそれぞれアクロバットとリーダー。」

レジストリに情報はありますか?

詳細: http://blogs.adobe.com/pdfdevjunkie/2011/01/big-changes-in-the-dde-naming-convention-for-acrobat-x.html