So-net無料ブログ作成

調べ物:WSHで「プログラムの追加と削除」を制御(UWSC併用) [プログラミング学習]

やりたいのは、プログラムのアンインストール。

1. コントロールパネルの「プログラムの追加と削除」を開く
2. 「プログラムのアンインストールと変更」で該当プログラムがインストールされているかをチェックする
3. インストールされていた場合、該当プログラムをアンインストールする
「wsh プログラムの追加と削除を開く - Google 検索」
http://www.google.co.jp/search?hl=ja&q=wsh+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%A8%E5%89%8A%E9%99%A4%E3%82%92%E9%96%8B%E3%81%8F&aq=f&aqi=&aql=&oq=&gs_rfai=

ユーザ操作を実行するために、UWSCを併用する。
処理の流れは以下のとおり。
1. WSHで「プログラムの追加と削除」起動。プログラムが表示されるまで待つ
2. UWSCをアンインストール対象プログラムのチェック、アンインストール実行スクリプトを読み込んで起動、実行
3. UWSCでクリック可能なコントロールを取得し、該当プログラムがあるかを選択
4. ある場合、該当プログラムを実行しアンインストールウィンドウ起動
5. アンインストール画面が表示されたら、UWSCで画面制御実行
参考サイト: 「コントロールパネルを開く: .NET Tips: C#, VB.NET, Visual Studio」
http://dobon.net/vb/dotnet/process/opencontrolpanel.html

「コントロールパネル及びコントロールパネル内の各メニューを開く - VBレスキュー(花ちゃん) VS,VB.NET,VB2005,VB2008,VB2010,サンプル,Tips」
http://hanatyan.sakura.ne.jp/dotnet/sys02.htm#no12

「WSHでコントロールパネルの起動 - Domo-Domo」
http://d.hatena.ne.jp/t_amago/20080518/p1

「Technic」
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/technic.htm#コントロールパネルの中身を直接実行

スクリプト
前提:
  ・UWSCの在り処:スクリプトの保存されているフォルダの直下のUWSCフォルダ
  ・UWSCで実行するスクリプト:Control_Uninstall.uws ※UWSCフォルダ内
  ・管理者権限のあるアカウントで実行
  ・アンインストール対象ソフト:+Lhaca
   ※Lhacaはアンインストール用の画面が出ないので、アンインストール画面があるプログラムに応用する場合は、その処理をUWSCスクリプトに追加
  ・動作確認環境:Windows 7
   ※具体的な影響:
       Windows XP:[プログラムの追加と削除]
       Windows 7:[プログラムと機能]
   ※Windows XP等で動作するよう考慮しているが、動作確認はしていない。
WSHファイル(VBScript)
Option Explicit

Dim WSHShell
Dim objFSO

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl"

WSHShell.CurrentDirectory = objFSO.GetParentFolderName(WScript.ScriptFullName)
WSHShell.Run "%ComSpec% /c "&WSHShell.CurrentDirectory &"\UWSC\UWSC.exe /K " & _
       WSHShell.CurrentDirectory &"\"&"UWSC\Control_Uninstall.uws"

UWSCファイル:
Dim retItem,retClick
Dim idProg
Dim intItemNo

//[プログラムの追加と削除]ウィンドウをアクティブ化
idProg = GETID("プログラム")

CTRLWIN(idProg,ACTIVATE)

//[プログラムの追加と削除]ウィンドウ
retItem = GETITEM(idProg,ITM_ACCCLK)

FOR i = 0 to retItem -1
print ALL_ITEM_LIST[i]
IFB POS("Lhaca",ALL_ITEM_LIST[i]) > 0 THEN
PRINT ALL_ITEM_LIST[i]
intItemNo = i
ENDIF
NEXT

IFB (intItemNo > 0) AND (intItemNo < retItem -1) THEN
retClick = CLKITEM(idProg, ALL_ITEM_LIST[intItemNo], CLK_ACC or CLK_SHORT )

ENDIF


タグ:UWSC WSH
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0