• ベストアンサー

ウィンドウを終了させたい・・・

kahaの回答

  • kaha
  • ベストアンサー率23% (41/177)
回答No.5

参考URL: [VB] Win32 アプリケーションを起動させ、終了させる方法 わたしには、よくわかりませんが。検索でヒット。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B129797

関連するQ&A

  • visualstudioについて

    visualstudio2008 c++でアプリケーションを作っているのですが, 画像のようなアプリケーションを起動させ, HWND hWnd = ::FindWindow(NULL,"D:\アプリケーション.exe"); ::SendMessage(hWnd,WM_SETFOCUS,0,0); としたのですが,ウィンドウハンドルを取得できていないみたいで,SendMessageが働いていません. また,HWND hWnd = ::FindWindow(NULL,"D:\アプリケーション.exe");の行のところで warning C4129: '' :とエラーがでているのですがどうしてでしょうか? 一応"D:\\アプリケーション.exe"と変えれば警告は消えます. よろしくお願いします.

  • エクスプローラの終了と再起動をするには?

    プログラムから『エクスプローラ』を一度終了して、再び起動させる方法を探しています。 私の考えでいくと WM_CLOSE というメッセージを送れば『エクスプローラ』を一度終了させられると 思っていますが、そのためにはウインドウ・ハンドルが必要ですよね。 問題はどうやって『ウインドウ・ハンドル』を取得するかということです。 ここの部分がよく分からないため質問します。 『エクスプローラ』を終了すべく大本の『エクスプローラ』のウインドウ・ハンドルを どうやって取得すればよいのか、ご存知の方がいましたら私に教えてくれませんか? また、WM_CLOSE メッセージ以外でもっとよい方法や、別の方法があれば複数の方法を より多く知りたいと思っていますので、たくさんのアイデア(終了と再起動)などを 教えて下さい。また、再起動は単に『エクスプローラ』を起動すればよいのですよね? よろしくお願いします。

  • 別アプリを終了させる

    以前にも同様の質問をさせていただいたのですが、 再度質問です。 A.EXEとB.EXEがあったとします。 B.EXEからA.EXEを終了させたい。 そこで、FindWindowでA.EXEのウィンドウハンドルを ゲット。 その後、WM_CLOSEメッセージを送るという流れなのですが、 どうも、終了する時と終了しない時があります。 1回目は必ず、終了させる事ができず、2回目以降は 終了します。 原因がわからず、困っております。 なにか良い解決策などがございましたら、ご教授ください。 よろしくお願い致します。

  • ウィンドウハンドルの取得方法

    ダイアログの表示されないEXEを起動させて、FindWindowを使用してそのEXEのウィンドウハンドルを取得したいのですが上手くいきません・・。 FindWindowの第一引数は「ウィンドウのクラス名」を指定するようなのですが、「ウィンドウのクラス名」の意味が良くわかりません。第二引数は「ウィンドウ名」を指定するようなのですが、今回のようなアンダーグラウンドで動くEXEには「ウィンドウ名」は無いと思ってよいのでしょうか? ちなみにダイアログのあるEXEならウィンドウハンドルを取得できます。 お分かりの方がいらっしゃれば、ご教授願います。

  • 別アプリの終了について

    いつもお世話になります。 開発環境はVC++6.0MFCです。 以前にも質問させていただいたのですが、 A.EXEとB.EXEがあったとします。 A.EXEをB.EXEから終了させたい。 しかし、A.EXEのタイトル(キャプション)は動的に 変更があり、タイトルNULLの時もある。 私はFindWindowでウィンドウハンドルを取得し、WM_CLOSE を投げているのですが、この方法だと上記理由により、 不正動作になります。 どなたかこういう場合の解決方法をご存知の方、 ご教授よろしくお願い致します。

  • 他のアプリの表示、非表示について

    他のアプリケーション(アプリA)をコントロールするプログラムを作っています。アプリAと自作アプリは起動したままです。自作アプリでボタンを押すとアプリAを表示させてアクティブにして仕事をさせ、終わったら非表示にします。 アプリAのハンドルをhandle = FindWindow()で取得して ShowWindow(handle,SW_SHOWNORMAL)で表示して、 ShowWindow(handle,SW_HIDE);で隠しています。 ボタンを押したときに、アプリAが表示されていると、非表示にしたあとタスクバーのアプリを手動で表示できません。 MINIMIZEやCloseWindos()も試しましたが、それだと画面の左下にアプリAが残ってしまいます。 SendMessage(handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);も試しましたがうまくいきません。使い方が悪いのかもしれません。 アプリAを隠す事と元のサイズで表示する。という二つの動作をプログラムで交互に行う場合に、途中で手動でアプリAの最小化、あるいはタスクバーから出すという動作をさせることができるのが希望です。どうすればよいでしょうか。 OSはXPです。

  • textboxに文字列を挿入したい。

    すみません。 質問があります。 VB6.0 windows2000 AファイルのFormの中にtextBoxを作成します。 BファイルにsendMessageAPIを使ってAファイルのTextBoxに文字列を送りたいのですが、うまくいきません。 sendMessage(hWnd,WM_SETTEXT,0,"テスト") FindWindowを使って、hWndのハンドルを取得したいのですが、うまくいきません。 他にハンドルの取り方ってあるのでしょうか? また、sendMessageのだい4引数は文字列を挿入しても文字化けを起こします。どうしてかよくわかりません。 どうしてもうまくいかないのですみませんが、ご存知の方いたら教えてください。

  • vbaから他のアプリを終了

    エクセルVBAから他のアプリを終了するマクロを書きたいのですが、途中で行き詰ってます。 Sub test() Dim h As Long h = FindWindow(vbNullString, "タイトル") Call SendMessage(h, 0, 0, "ALT+{F4}") End Sub FindWindowでハンドルを取得してALT+F4を送ればいいじゃないかと思ってますが ALT+F4の送り方がわかりません。どなたか教えてください。 また、ほかに良い方法があれば併せてご提案くださると幸甚です。 よろしくお願いします。 -- エクセル2003

  • Windowsの終了について

    私はWindows XP SP2 を利用している者です。 最近、Windowsを終了しようとすると、「Tea Timer.exe」が立ち上がり、しばらくの間何やら作業を行った後で、次のメッセージを送ってきます。 「このプログラムは応答していません。Windowsに戻って、プログラムの状態を確認するには、[キャンセル]をクリックしてください。  プログラムを終了した場合は、保存されてないデーターが失われる可能性があります。直ちに終了するには[すぐに終了]をクリックしてください。」 私は[すぐに終了]をクリックします。すると無事に終了してくれます。 私の質問は、このプログラムとは何を指すのか? ということです。終了前には、すべてのプログラムを私は終了しています。だから、このプログラムとは、EXPLORERのことなのかな、と推測します。 もう一つ教えてほしいのは、私はそのメッセージが出た後で、つねに[すぐに終了]をクリックして、終了させているのですが、その作業を毎回するのは邪魔くさいので、これを回避する方法はないかということです。以前はこんなこともなく、スムースに終了していたのですが…。OSが不安定・不調になりかけているのでしょうか。 お分かりの方に、アドバイスをお願いします。

  • ウィンドウアプリが思うように動かない(GetWindowTextの使い方?)

    プログラミング初心者です。Windows XP, Visual Studio 2005 PE 使用。MFCは使わない(というより使い方がわからない…)。 簡単なウィンドウプログラムを作っています。エディットボックス1つとボタン1つを含むもので、ボタンを押すとエディットボックスの文字列を取得して、もしそれが close であればプログラムを終了するようにしたいんです。 自分で書いたコードの一部(プロシージャのみ)を以下に載せます。WM_CREATE、WM_DESTROYメッセージは省略。edit1はエディットボックスのハンドル、case式の2はボタンの子ウィンドウIDです。 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ char lpString[6]; switch(msg){ case WM_COMMAND: switch(LOWORD(wParam)) { case 2: GetWindowText(edit1,lpString,6); if(lpString == "close") SendMessage(hWnd, WM_CLOSE, 0, 0); else SendMessage(edit1, WM_CLEAR, 0, 0); return 0; } return 0; default : return DefWindowProc(hWnd,msg,wParam,lParam); } return 0; } Visual Studioではちゃんとビルドしてくれるんですが、いざ実行してcloseと入力した上でボタンを押してもうんともすんとも言いません。原因は何でしょうか?素人ながらlpStringをそのまま取り出して使用してるのがまずいのではと思いますが、関数の使い方がわからず対処に困っています。教授いただければ幸いです。