3

さて、私はコード例を見て、これを行う方法についてウェブ全体に投稿するために最善を尽くしましたが、Windows API を使用して、既に存在する別のプログラムとやり取りするために数か月間前進することができませんでした。ランニング。私は最高のプログラマーではなく、このようなもののいくつかは私を超えています。

私ができることのほとんどは、Calculator プロセスとそのハンドルを見つけ、それを SetWindowText で使用してタイトルを変更することです。私が本当にやりたいことは、ソフトウェア計算機の数字キーボタンを実際に押して簡単な計算を行うことにより、プログラムでWindows user32(これは正しいライブラリであるに違いないと思います)を使用していくつかの数字を入力することです。

私はこのプログラムを実際に使用することはありません。これは、特に C# の初心者レベルを超えて Windows API を使用する方法を学ぶために達成しようとしている目標です。誰もこのためのコードを持っていない場合、またはあなたが持っていたとしても、これを行う方法を学ぶために読むべき Web 上の書籍やリソースについていくつかの提案をいただければ幸いです。

4

2 に答える 2

2

プラットフォーム呼び出し (P/Invoke) の楽しい世界に入ります。この世界であなたの親友はwww.pinvoke.net です。これには、多数の winapi 関数のc# (および vb.net)署名が含まれています。

たとえば、SendMessage次のとおりです。

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

およびこのメッセージ コードのリスト

すべての p/invoke メソッドが、名前空間DllImportにある属性を使用していることに気付くでしょう。System.Runtime.InteropServices

またextern、メソッド シグネチャに修飾子があります。これは、コードが現在のアセンブリの外にあることを意味します。

SendMessageその後、電卓のハンドルにメッセージを送信するために使用できます。

Jonathan がコメントで述べたように、Spy++を使用して、複製したいアクションをもたらすメッセージが送信されていることを検出する必要があります。

参考までに、P/Invoke に関する詳しい情報が記載された記事を参照してください

于 2013-01-01T07:48:42.537 に答える