• ベストアンサー

VisualBasic.NETのSendKeyをVisual C++で実現したいのですが。

VisualBasic.NETでは SendKeys.Send("Hello") を実行すればメモ帳でもインターネットのテキストフレームにでも文字列を送り込むことはできますが、(フォームを隠しておきますが、、、)、 VisualC++ではどのAPI等を使えば、 まったく同じ機能を果たすことができますか? よろしくお願いします。 VisualC++ Win32アプリケーション WindowsXPです。

noname#16581
noname#16581

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

keybd_eventか、SendInput

noname#16581
質問者

お礼

ありがとうございます。 できました。

その他の回答 (2)

回答No.3

確認するとSendMessageでテキストボックスへのデータ送信は可能でしたが、もとの質問の > VisualC++ではどのAPI等を使えば、 > まったく同じ機能を果たすことができますか? これに関するクリティカルな答えは#2氏の言われる通りであることと、SendInputをやめてSendMessageにする積極的な理由は無さそうですね。 # SendInputが駄目とするならSendMessageも駄目とすべきかと思うので >VisualBasic.NETのSendKeyでは可能ですが、 >どういう仕組みですか? SendKeysはキー入力なんで HelloはH,l,l,oとkey入力されたことになります。 仕組み=内部処理として言われているなら確かめていません。

回答No.1

SendMessageやPostMessageで可能かと思いますが

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cwnd.3a3a.sendmessage.asp
noname#16581
質問者

補足

こんな感じのことでしょうか? #include<windows.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { Sleep(3000); HWND hWnd; hWnd=GetForegroundWindow(); hWnd=FindWindowEx(hWnd,NULL,"EDIT",NULL); SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)"Hello"); return 0; } でも、これだと、 インターネットエクスプローラーのテキストボックスに 文字列を流し込めないのですが、 どうすればいいですか? VisualBasic.NETのSendKeyでは可能ですが、 どういう仕組みですか?

関連するQ&A

  • visual C++2008 Express 変数宣言等について

    sea_clear_skyです。 質問させて頂きます。 <環境> WindowsXP SP3 VisualC++ 2008 Express 現在、VisualC++ 2008 Expressでプログラムの勉強をしています。 VisualC++ Expressでコンソールアプリケーションじゃなく、 Windowsフォームアプリケーションで、変数の宣言(配列)の仕方と message::showで、変数の値を表示させる方法がわかりません。 C/C++などの、コンソールアプリケーションの方法では エラーがでて、実行できなかったので、 Windowsフォームアプリケーション用の記入の仕方があるのでは ないかと思っています。 初心者なので、わからない状態です。 VC++ 2008 EXPRESS 変数宣言 VC++ 2008 EXPRESS 変数 VC++ 2008 EXPRESS データ型 message;;show vc++ VC++ 2008 リファレンス VC++ 2008 入門 等など、たくさんのキーワードでホームページを 検索しましたが、知りたいことが載っている ホームページを見つけることができませんでした。 参考HPや解決方法について、ご教授お願いします。 すいませんが、よろしくお願いします。

  • VisualBasicにてアプリ作成をしていて

    VisualBasicにてアプリ作成をしていて 作成アプリ→ブラウザにSendWaitで文字列送信をしている(ブラウザ側では 規定のページでテキストボックスにカーソルがあること前提)のですが、その時に 送信した文字列の中の1文字が欠落してブラウザのテキストボックスに表示される ことがあります。 ex.) SendKeys.SendWait("0123456") → ブラウザ上は 012356 似たような現象が発生した方、原因等わかるかたご教授ください。

  • 他のウィンドウのボタンを自動的に押したい

    VisualC++で作ったアプリケーションから、例えばWindowsに標準搭載の「電卓アプリケーション」のウィンドウをアクティブにして、さらにその中の「1」ボタンを認識して押す、テキストボックスを認識してそこに文字列を入れるといったソフトを作りたいです。 簡単にいうと、他のアプリケーションを自動的に操作するソフトを作りたいのです。 これを実現するために、Web検索してみましたが、関連する技術の名前やMFCでのAPI名がわからないです。これはどういった名前の技術で、VisualC++でどういった名前の関数を使うのでしょうか? 当方の環境はWindowsXP&VisualC++6.0です。 以上、よろしくお願いします。

  • C++ API 全般 APIの概要は

    独学にてプログラミングを勉強しているのですが、いきづまってしまったので質問お願いします。 ※Visual Studio 2008 Express Editionsを使用しています。 まだプログラミングに関しての勉強を始めて1ヶ月程度で、最初はVB.NETから始めて、最近C++に乗り換えました。 趣味の範囲でのゲームを作ろうと思っていて、C++とDirectXでの開発を予定しています。(しかし、最終的にはゲームに限らずプログラミングの技術と知識を習得することを目標にしています。)(DirectXに関してはまだ手をつけていません。) まったく1からのスタートで、現在win32コンソールアプリケーションにてコードの勉強をしているところです。 勉強に使っている参考文献は ・VisualC++.NET逆引き大全500の極意 ・ゲームプログラマになる前に覚えて起きたい技術(これを買うには早すぎたようです…。第一章も半分くらいしか理解できません…。) サイトは ・主に「0からのゲームプログラミング」というサイトです。 http://www.plustarnet.com/aspil/Programming/ 本題の質問ですが、APIというものがいまいち理解できません。 (1)上記のような目的で使用するAPIは、標準 Windows APIというものでいいのでしょうか? (2)win32コンソールアプリケーションでは実行できるのに、win32プロジェクトでは実行できないのはなぜでしょうか? #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , TEXT("Hello Wold!") , TEXT("メッセージボックス") , MB_OK); return 0; } (3)http://www.plustarnet.com/aspil/Programming/CConsole.htm このURLのコンソールAPIというのは、一般的に使われているものでしょうか?それともこのサイトのオリジナルのものでしょうか?win32コンソールアプリケーションでAPIを使うには、このURLのCConsoleクラスとうものをインクルードしないといけないのでしょうか?#include<windows.h>と宣言することによって気軽に使いたいものを使うことはできないのでしょうか? (4)#include<windows.h> とした場合、作るものが「win32コンソールアプリケーション」だったり「win32プロジェクト」だったり「windowsフォームアプリケーション」だったりで、使用方法などがまったく別になってしまうのでしょうか? (5)そもそも、上記の目的の場合APIを勉強する必要はあるでしょうか? (6)勉強をしたほうが後々に役立つ場合、どのAPIを勉強するのがいいのでしょうか?(APIといっても様々なものがあるんだなと思い質問しました。もし勘違いでAPIというものは一つしかないとしたらすみません。) なぜAPIに関してかというと、単純に上記のサイトで言語編の一番上から順に見ていったからです。 初心者すぎて質問が的外れかもしれませんがよろしくお願いします。

  • VisualStudioのC++のテンプレートについての質問です

    VisualStudioのVisualC++のテンプレートにあるWindows フォームアプリケーション とWin32プロジェクトのWindowsアプリケーションはどのような関係があるのでしょうか?

  • シンプルなC++のコンパイラを教えてください!

    C++、プログラミングの全くの初心者です。。 今、visualC++2005をインストールして、Win32アプリケーションを作成するため、 http://freepg.fc2web.com/cpp/topic_vce_001.html に従って、SDKのインストール→“corewin_express.vsprops”の修正まで来ました。ですが、“corewin_express.vsprops”のファイルが開くことができず、困っています。インストールすべきプログラムを知っている方、その他対処法を知っていたら教えてください。 それから、わたしは高度なプログラムを作ることが目的としているわけではなくて、「点が点滅するプログラムを作る」程度のことができれば十分なのですが、それでもVisualC++を使うのがいいのでしょうか?? メモ帳とコマンドプロンプトでほんの少しjavaをかじっただけなので、VisualC++は私にとっては機能が多すぎて、逆に混乱してしまっています。。というか、正直Win32アプリケーションが使う必要があるのかも理解できていないのが現状です… もっとシンプルなC++のコンパイラ(できればメモ帳つかうもの)があれば教えていただけたらうれしいです。(googleなどで検索して、VisualC++がいいとあったので、ひとまずVisualC++をインストールしました。) 勉強不足で申し訳ないのですが、どうかおねがいします!!

  • C++プログラム最後まで表示できません

    かけだしです。VisualC++.NET2003,WindowsXP SP2 Win32projectのコンソールアプリケーション空のプロジェクトにての作成です。 簡単な文字列をキーを押すごとに順番で10種類ぐらいずつ表示するプログラムを始めて作ったのですが、プロジェクトを開き「ビルド」→「ソリューションのビルド」→「デバックなしで開始」すると最後の表示までいくのですが、出来上がったファイル(「デバック」内の実行ファイル)をデスクトップに落として実行すると最後のワンステップ前で消えてしまいます。なぜだかわかりません。よろしくお願いします。

  • VisualBasic.NET MDIアプリの子フォーム間のやりとり

    最近VisualBasic.net(2003)を始めた初心者です。 MDIを使ったアプリケーションを作りたいと考えているのですが なかなか進まなくて困っています。 frmA(親フォーム) frmB・formC(子フォーム)を作成して 表示させた後 frmBの中のラベルのテキストや表示を frmCのボタンによって変更したいのですが なかなかうまくいきません。 親フォームからではできるみたいなのですが 子フォームどうしでは できないのでしょうか? ぜひ アドバイスをよろしくお願いいたします。 (説明不足なところは申し訳ございません。)

  • C# TextBoxをもつフォームが非アクティブ

    お世話になります。 C#にて、付箋紙の様な簡易メモ帳を作ろうとしています。 フォーム上にテキストボックスを配置し、テキストを入力後、 そのフォームが非アクティブになった時、つまり、デスクトップや 他のウインドウに切り替わった瞬間に(フレームの色が変わった時) 自動保存させたいと思うのですが、なかなかうまくいきません。 方法をお教えください。 尚、現在はLeaveイベントで取得しようとしてみましたが、 フォーム内では発生しますが、違うウインドウに切り替えただけだと 発生しません。 以上、よろしくお願いいたします。

  • Visual C++でテキストエディタ作成方法の詳しい解説サイトを教えてください。

    Visual C++でテキストエディタを作りたいのですが、詳しい解説サイトを教えてください。 (1)メニューストリップの設定の仕方が分かりません (2)プロジェクトをWindowsフォームアプリケーションでつくるのか、Win32コンソールアプリ内のWindowsアプリでつくるのか。それも教えて欲しいです。 (3)コントロールの説明と使い方、プロパティの内容 (4)テキストエディタを作りたい 以上の中でどれか一つでもいいので詳しいサイトかアドバイスを教えてください。お願いします ExpressEditionなのでMFCが使えませんが、Platform SDK 2003が入っているのでWin32コンソールアプリケーションは使えます。Windows Vistaです

専門家に質問してみよう