MSDEのアンインストールプログラムの作成方法

このQ&Aのポイント
  • MSDEのアンインストールプログラムを作成する際、メッセージを自動的に処理する方法について教えてください。
  • アンインストールの過程で表示されるメッセージを全てFindWindowで探し、SendKeysでキーを飛ばす方法を試しましたが、最後の画面が消えません。
  • ネットで情報を検索しても有用な情報が見つからないため、アンインストールプログラムを完成させるための助言を求めます。
回答を見る
  • ベストアンサー

findwindowとsendkeys

 今、MSDEをアンインストールするプログラムを組んでます。  IsUn0411.exeをshell関数の引数にして、起動させると  途中いくつかメッセージが出てきます。  ユーザーには触らせたくないので、  これらのメッセージを全てFindWindowで探して、  SendKeysでキーを飛ばしました。  アンインストール自体は出来るのですが、問題は  最後の”コンピュータからプログラムの削除”という画面です。  これも同じくFindWindowで探すことはできるのですが、  最後SendKeysでキー("{ENTER}")を飛ばしても消えてくれなくて困っています(>_<)。  ネットで色々なページを検索して探してはいるのですが、  参考になるところが見つからなくて・・・。  すみませんが、どなたか良いやり方をご存じの方、教えてください。  よろしくお願いします。

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

SendMessageで出来るかも

参考URL:
http://oshiete1.goo.ne.jp/goo_search.php3?kw=FindWindow+SendMessage

関連するQ&A

  • Sendkeysのタイミング

    2日前に"sendkeysとfindwindow"というタイトルで質問した者です。 まだ解決できなくてまだ困っています。 内容は、  今、MSDEをアンインストールするプログラムを組んでます。  IsUn0411.exeをshell関数の引数にして、起動させると  途中いくつかメッセージが出てきます。  ユーザーには触らせたくないので、  これらのメッセージを全てFindWindowで探して、  SendKeysでキーを飛ばしました。  アンインストール自体は出来るのですが、問題は  最後の”コンピュータからプログラムの削除”という画面です。  これも同じくFindWindowで探すことはできるのですが、  最後SendKeysでキー("{ENTER}")を飛ばしても消えてくれなくて困っています(>_<)。 というもので、なぜメッセージが消えないのか原因が分かりました。 SendKeys関数で"{ENTER}"キーを送信してはいるのですが、 問題はタイミングでした。 ”コンピュータからプログラムの削除”というウィンドウがアンインストール中に すでに出ているため、"{ENTER}"キーを飛ばしてしまいメッセージが消えない・・・ということでした。 そこで、再び質問です。 アンインストールが終了して、OKボタンが有効になったときに"{ENTER}"キーを 送りたいのですが、何か良い方法はありませんか? 私が思いつくのはGetCodeExitProcssしかありません。 これだと完全にexeが終了した場合に使うものなので、 まだメッセージが残っているときは使えませんよね・・・。 では、よろしくお願いします。

  • SendKeysを使いたい。

    SendKeysを使いたい。 XP-Excel2003です。 Microsoft Bisual Basicのヘルプに記述してある次の構文のうち、 SendKeysが実行されません。 Dim ReturnValue, I ReturnValue = Shell("CALC.EXE", 1) AppActivate ReturnValue For I = 1 To 20 SendKeys I & "{+}", True Next I SendKeys "=", True SendKeys "%{F4}", True F8キーにて、順次実行は出来るのですが、SendKeysが有効になりません。 参照設定の何かにチェックがついていないのだと思います。 その何かを、または別の方法をお教え願います。

  • SendKeys()が一番最後に実行されてしまう。

    SendKeys()が一番最後に実行されてしまう。 コマンドボタン(<input type="button onclick="jidou();">)をクリックすることで、 <form>内の<textarea>に、連続して文字を自動入力させようとしています。 このとき、挿入する文字の途中に、何度かSendKeys("{ENTER}")を挟んで改行をさせているのですが、なぜか、全ての文字がセットされたあとで、最後にまとめて、改行(SendKeys("{ENTER}"))されてしまいます。 解決に行き詰っています。どなたかご存知の方、ご教授願えないでしょうか。 よろしくお願いします。 function jidou() {   :  (文字挿入)   : var wsh = new ActiveXObject("WScript.Shell"); document.getElementById("textarea1").focus(); wsh.SendKeys("{ENTER}"); wsh=null;   :  (文字挿入)   : }

  • VBSのSendKeysでクリックができない

    音声認識アプリケーションからvbsを実行できるのですが、ここで一度だけマウスクリックしたい状況が出てきて困っています。 Dim WSHShell As Object Set WSHShell = CreateObject("Wscript.Shell") WSHShell.AppActivate "操作したいアプリケーション名" WSHShell.SendKeys "{TAB}" 'OK WSHShell.SendKeys "{ENTER}" 'OK WSHShell.SendKeys "{CLICK LEFT, 10, 10}" 'NG TABキーやENTERキーは動作するのですが、3番目のマウスクリックがExceptionといわれエラーになってしまいます。Sendkeysでマウスクリックを送信するにはどうしたらよいのでしょうか?ネットで調べたリファレンスだと上記のような書き方で良さそうなのですが・・・ 音声認識アプリケーションはドラゴンスピーチ11Jで、OSはWin 7 ProとWin 8、どちらも64ビットです。

  • SendKeys "^V", True(貼り付け)のミス

    エクセルシートに設定したリアルタイム関数(楽天マーケットスピード)でデータを取得し、フィルターをかけてメモパッドに表示しています。   エクセルでクリップボードに格納したものを下記のプログラムで[Ctrl]+[V]キーを転送しています。 問題は[Ctrl]+[V]キーがしばしば他のアプリケーションのカーソルに転送されてしまいメモパッドがパスされてしまいます。 AppActivateが効かないのか分かりませんが対策を是非ご教示下さい。 Sub NotePad書き出し() Dim myPath As String dim y as long If nsw <> 0 Then GoTo 即貼り付け'メモ帳起動は一度だけ nsw = 1 myPath = ActiveWorkbook.Path & "\" 'メモ帳を起動する myID = Shell("Notepad.exe", vbNormalFocus) For y = 1 To 3000 'notePadが開く余裕を3秒間取る DoEvents Sleep 1 Next y 即貼り付け: '[ENTER]キーを転送して1行空ける SendKeys "{ENTER}", True 'メモ帳をアクティブにする AppActivate myID '[Ctrl]+[V]キーを転送してコピーした内容を貼り付ける SendKeys "^V", True 'コピーモードを解除する Application.CutCopyMode = False End Sub

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

    いつもお世話になっています。 画面遷移時にあるメッセージウィンドウ(別exe)をVBから起動させ、遷移が終わった後にそのexeを終了させるプログラムを作っています。 プログラムの中身としては、 (1) Shell関数でexe(メッセージウィンドウ)を起動 (2) FindWindowで、起動しているexeのハンドルを取得 (3) 取得したハンドルに、SendMessageでexeを閉じるようにする(WM_CLOSEを使用)。 ・・・といったものです。 (1)と(2)はうまくいくのですが、最後のSendMessageがうまくいきません(>_<) 試しに(1)と(2)の後に、Do文の中で [1]SendMessageで起動したexeを終了させるようにする [2]FindWindowをして、ハンドルが0だったら、Exit Doする ・・・ようにプログラムしてみたところ、永久ループになってしまいました・・・。 他にも、SendMessageの代わりにShowWindowを使ってみましたが同じくダメでした・・・(T-T) ネットで調べていますが、他の方法が浮かびません。 どなたか、良い方法をご存じでしょうか?? よろしくお願いします!!

  • VBAのSendkeysでShift付の文字になる

    ExcelのVBAでGOM Playerを動かそうと思っています。 動画の途中から時間指定で再生しようと思っていますが、再生時間を指定するための画面を出す文字コード「G」をSendKeysで送るとなぜかShiftキー付の文字コードが送られてしまっているようです。 GOM Playerでは「G」を押すと「移動先の時間を指定」画面が出るのですが、VBAで「G」を送ると、「Shift+G」で表示される「オーディオキャプチャー設定」画面が出てきてしまいます。 VBAではなく手で「G」キーを押すと何の問題もなく表示されます。 具体的に書きますと H列のセルを選ぶとH列に書いてある時間(「0:04」など)のところから再生が始まるプログラムになります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set 指定セル範囲1 = Range("H2:H132") Set 共有セル範囲1 = Intersect(ActiveCell, 指定セル範囲1) If Not 共有セル範囲1 Is Nothing Then Shell "C:\Program Files (x86)\GRETECH\GomPlayer\GOM.EXE", 1   SendKeys "G"   SendKeys "00:0" & Cells(Rows.Count, 8).Value End If End Sub 「Shell・・」の行はExcelがアクティブの状態からGOM Playerがアクティブの状態にするために入れてあります。 Wait時間を入れてみたり、CRを送ってからGを送ったり 下記のように別のコートで送ってもダメでした。 SendKeys ("G") SendKeys vbKeyG SendKeys 71 また「G」だけではなく「P」を送っても「Shift+P」が送られた動作になってしまいます。 すみませんが、お知恵を貸していただけませんでしょうか。 よろしくお願いします。

  • イベントビューアの操作をしたい

    Windows2000ProSP2でVB6SP5を使用しています。 イベントビューアを起動し、「セキュリティログ」を選択して、「操作(A)」-「ログファイルの名前を付けて保存(A)」、それで名前を付けてCSV形式で保存したいのです。 Shell関数でeventvwr.exeを実行して起動した後、Sendkeysでキー操作をすればいいのかと思ったのですが、 できません。 Shell関数の後でイベントビューアが完全に起動するまで待つ必要があるのではないかと思っています。 実現するには、どのようにすればよいのでしょうか? だめ↓ Shell "eventvwr", vbNormalFocus SendKeys "{DOWN}", Wait SendKeys "{DOWN}", Wait SendKeys "%(a)", Wait

  • VBScript

    下記、プログラムを実行すると、コマンドプロンプトの画面が 消えずに、そのまま残ってしまいます。 どうしたら、画面を消すことができるでしょうか。 お力添えをお願いいたします。 Set WshShell = Wscript.CreateObject("WScript.Shell") Set WshEnv = WshShell.Environment("user") WshEnv("C:\NET\aaa.txt") = "administrator" Wshshell.Run("cmd.exe") WScript.Sleep(500) WshShell.SendKeys("runas /user:administrator " + chr(34) + "xcopy D:\NET\aaa.txt C:\NET\aaa.txt" + chr(34)) WshShell.SendKeys("{Enter}") WScript.Sleep(500) WshShell.AppActivate "C:\WINDOWS\system32\runas.exe" WshShell.SendKeys("XXXXX") WshShell.SendKeys("{Enter}") WScript.Sleep(500)

  • メッセージボックスの回避について。

     VBのプログラムからShell関数を使って、あるexeを起動させると、OKボタンがひとつの  メッセージボックス返ってきます。  ユーザーにはそのメッセージボックスをさわらせることなく、処理をしたいのですが、良い案が浮かびません。  ネットやヘルプで調べたのですが、参考になるものがなくて・・・。  全然分かりませんが、VBではなくAPI関数の中にそのようなものがあるのではないかなぁと思っています。  申し訳ありませんが、教えてください。  よろしくお願いします。

専門家に質問してみよう