問題タブ [pinvoke]
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.
c# - C# から COM オブジェクトにアクセスする最良の方法
COM オブジェクトとして公開されているさまざまなオブジェクトを使用する予定です。使いやすくするために、C# オブジェクトとしてラップしたいと思います。これに最適なアプローチは何ですか?
c# - プログラムでマウスカーソルを移動する
まず、このコードをhttp://swigartconsulting.blogs.com/tech_blender/2005/08/how_to_move_the.htmlで見つけました。
ボタンのクリックイベントハンドラーに次のコードを貼り付けます。
これにより、マウスポインタがボタンの中央に移動します。
このコードはうまく機能しますが、少し拡張する方法がわからないようです。ドロップダウンリストボックスを含むWebページ(以前は知らなかったランダムなページ)に対してInternet Explorer(Windowsフォームに埋め込まれている)を開いているとします。上記のコードを変更して、カーソルを移動し、リストボックスをドロップダウンし(以下に示すマウスクリック方法を使用してリストをドロップダウンします)、リストを上下に移動して、各アイテムをマウスポインターとして強調表示します。行きますが、私の一生の間、現在選択されているアイテムを実際にマウスクリックして選択を維持する方法を理解できません。私のやり方では、ドロップダウンリストボックスが閉じるだけで、選択は変更されません。私はマウスクリックに次のコードを使用しています(これによりリストがドロップダウンされます):
私はここで単純な何かを見逃していると確信していますが、私の人生ではそれが何であるかを理解することはできません。みなさん、よろしくお願いします。
ボブ
internet-explorer - IE ActiveX コントロールがいつ再描画されたかを判断する
spy++ を使用していて、Windows フォームに埋め込んだ IE コントロールが、再描画時に定期的に WM_PAINT を呼び出したり送信したりしていることに気付きました。このコントロールが WM_PAINT を送信するたびに、C# コードで C# メソッドを実行する方法を理解しようとしています。この時点でピンボークが危険であることは十分にわかっています。
前もって感謝します、
ボブ
asp.net - P/ASP.NET で [DllImport] を呼び出す
DLLImport を使用するときに同時実行性に問題があります。Web 経由で送信する必要があるレポートを提供する Dll があるので、次のようにします。
Dll 側には、レポートと共にパスを返す多くの変数とインスタンスがあります。
私が今持っているコードは PrintRep の呼び出しをロックしていますが、これは機能しますが、明らかに保留中の要求を待機させます。これをロックなしで機能させる方法はありますか? ロックを解除すると、「保護されたメモリに書き込もうとしています」というエラーがいくつか発生し、Dll が最終的にハングするためです。
c# - .NET ビットマップをネイティブ DLL に渡すにはどうすればよいですか?
ここに私が持っているものがあります:
C で記述した外部 DLL。この DLL は opencv にリンクしています。OpenCV を C# から直接呼び出したくありません。DLL で使用される OpenCV にアクセスする大量の C コードが既に存在します。エクスポートされた関数があります: passbitmap(void *mem, size_t s);
DLL を呼び出したい AC# プロジェクト。
- 何らかの方法でピクセル/ビットマップ データを DLL に渡したい System.Drawing.Bitmap オブジェクト。
ある種の P/Invoke だと思いますが、一度も行ったことがなく、この場合、適切に行う方法がわかりません。どのように進めればよいですか?
c# - PInvoked OpenFileDialog (GetOpenFileName) からの文字列のアンマネージ配列のマーシャリング
OpenFileDialog は、null で終わる文字列のシーケンスを含むメモリへのポインターを返し、その後に配列の末尾を示す最後の null が続きます。
これは、アンマネージ ポインターから C# 文字列を取得する方法ですが、より安全でエレガントな方法があるはずです。
windows - C# から MsiEnumRelatedProducts を呼び出すとクラッシュする
C# から MsiEnumRelatedProducts を呼び出すのに問題はありません。p/invoke 定義でいくつかのバリエーションを試しましたが、うまくいきませんでした (out と ref)。問題は、39 文字の長さの文字列を指すことになっている LPTSTR である最後のパラメーターだと思います。
ピンボークと呼び出しは次のとおりです。
クラッシュは、渡された UpgradeCode に少なくとも 1 つの製品がインストールされている場合にのみ発生することに注意してください。