DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

VB6のSendKeysと同じ事を行うには?

VB.NETでVB6のSendKeysステートメントと同様の事を行うには、SendKeysクラス(System.Windows.Forms名前空間)のSendまたはSendWaitメソッドを使います。SendWaitはSendと違い、送信したキーストロークで開始された処理が終了するまで待機します。

VB.NET
コードを隠すコードを選択
'PrintScreenキーストロークを送信
SendKeys.SendWait("{PRTSC}")
C#
コードを隠すコードを選択
//PrintScreenキーストロークを送信
SendKeys.SendWait("{PRTSC}");

.NET Framework 2.0以降のVB.NETでは、My.Computer.Keyboard.SendKeysメソッドを使用することもできます。これは、SendKeysクラスのSend、SendWaitメソッドと同じです。

補足:目的のウィンドウをアクティブにするAppActivate関数と同様のものが.NET Frameworkにはありませんので、VB.NETのAppActivate関数を使うか、もしくは、Win32 APIのFindWindow関数やSetForegroundWindow関数を使う必要があります。この方法に関しては、「フォームをアクティブにする」で説明しています。

注意:Windows Vista + .NET Framework 1.1でSendKeysが正常に機能しない場合は、「Microsoft Windows Vista で SendKeys を使用するための Microsoft .NET Framework 1.1 Service Pack 1 更新プログラム」をご利用ください。
  • 履歴:
  • 2007/1/15 .NET Framework 2.0に関する記述を追加。Windows Vistaで正常に機能しない対処法を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。