問題タブ [intptr]
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#のアンマネージコード用に機能するポインター
コールバックを実行する関数へのポインターを含む構造体を受け入れるdllがあります。
構造体を構築するために、アプリケーションの関数にIntPtrを取得するにはどうすればよいですか?
これがOPERATION構造体を受け入れるデリゲートです
c# - C# HEX 値から IntPtr
Spy++ を使用して見つけたウィンドウに 16 進値があります。
値: 00010010
以前に尋ねた質問への回答のおかげで、次のコードがあります。
今、私が理解している限り、IntPtr hwndParent にはウィンドウ WINDOW HERE へのハンドルが含まれます。16 進ハンドルを使用するようにその行を書き直すにはどうすればよいですか? 私は試した:
しかし、うまくいきませんでした。何か案は?
c# - どうすればあちこちに新しいラッパーオブジェクトを作成しないようにできますか?
をラップするさまざまなクラスがありIntPtr
ます。独自のデータ(ポインター以外)を格納しませんが、代わりにプロパティとメソッドを使用して、アンマネージライブラリを使用してポインターでデータを公開します。それはうまく機能しますが、他のラッパーオブジェクトからこれらのラッパーオブジェクトを参照できるようにする必要があるところまで来ました。例えば:
これで、(上記のように)単純に返すことができますnew Node(parentPtr)
が、数万のノードを持つ可能性があります。複数のラッパーオブジェクトが同じものを参照する可能性があるため、これは悪い考えではないでしょうIntPtr
か。
これを修正するにはどうすればよいですか?それぞれをキーとして使用する静的KeyedCollection
クラスを使用することを考えました。だから、毎回IntPtr
新しいものを返す代わりに、私はそれを調べることができます。Node
しかし、それはスレッドの問題を引き起こしますよね?
もっと良い方法はありますか?
.net - System.IO.UnmanagedMemoryStream - なぜ IntPtr ではなく Byte* なのか
BCL チームが UnmanagedMemoryStream のコンストラクターで IntPtr の代わりに Byte* を使用することを選択した理由を知っている人はいますか? これにより、型を構築するために安全でないコンテキストを使用する必要があります。彼らは IntPtr を使用できたようで、安全でないコンテキストを強制することはなかったでしょう。
c# - c# を使用したセミアンマネージ コード
そのため、このコードが私のプログラムのコアであるにもかかわらず、このコードが何を意味するのかわかりません。キーボード プレス イベントをフックし、プログラムに送信します。貴重な時間を割いて、私にいくつかのことを説明してくれる人はいますか。私は args クラスを理解しているので、それをスキップできます。私は主に、デリゲートとは何か、IntPtrとは何か、2 つのメソッドとそれらが行ごとに何をするのかに興味があります。
誰か時間があればありがとう
c# - PostMessage は文字列 C# を渡すことができません
これが私のプロトタイプです:
そして、これが私がそれを使用している方法です:
別のスレッドでこのメッセージをインターセプトできますが、次を使用してボブを取り戻そうとすると:
私はstrでボブを取得しません。
これは、あるスレッドのスタックで「bob」文字列を参照し、その参照が別のスレッドのスタックではまったく意味をなさないという事実によるものだと考えています。しかし、その場合、これらの wparam および lparam ポインターは、同じスレッドで渡されるメッセージに対してのみ実際に使用されますか?
編集* 訂正: スレッドとは、プロセスを意味します。これは、スレッドではなく、プロセス間で文字列を渡す際の問題です。
c# - int[] 配列から IntPtr を取得することは可能ですか?
ご挨拶。
C# の場合: このように宣言された int[] 配列がある場合
この配列から IntPtr を取得する方法はありますか?
問題は、私が EmguCV フレームワークを使用していることです。配列 (int[]) からイメージを構築するために、IntPtr をピクセル データに取り込むイメージを作成するコンストラクタがあります。
ところで、誰かがストライドの計算方法を教えてくれたら、それは素晴らしいことです.
c# - IntPtr を宣言するには?
ウィンドウ ハンドル ピッカーがあり、私のハンドルは 0094167C と表示されます。C# で変数を宣言すると、このコードの文字でエラーが発生します。どのように宣言するのですか?
public const IntPtr WinHandle = 0094167C;
.net - C#でint *をマーシャリングする方法は?
管理されていないライブラリでこのメソッドを呼び出したい:
私の解決策:
デリゲート定義:
[UnmanagedFunctionPointer(CallingConvention.StdCall)]プライベートデリゲートvoid GetConstraintsDel(UIntPtr puiMaxWidth、UIntPtr puiMaxHeight、UIntPtr puiMaxBoxes);
メソッドの呼び出し:
/li>
動作しますが、「安全でない」フラグを許可する必要があります。安全でないコードのない解決策はありますか?または、このソリューションは大丈夫ですか?プロジェクトに安全でないフラグを設定することの意味をよく理解していません。
手伝ってくれてありがとう!
c# - IntPtrと安全でないコードの回避
IntPtrを使用する外部ライブラリがあります。これを行うための安全な方法はありますか...
...「安全でない」コードを使用せずに?私はIntPtrsにあまり詳しくありませんが、次のようなことをしたいと思います。
.../unsafeでコンパイルする必要がないような方法で。
WriteBytes関数を変更できません。これは外部関数です。
'ref int'とIntPtrの間に何らかのキャストがあるはずですが、私はそれを見つけることができませんでした。