2009-11-24 8 views
1

WSH 또는 WMI 등을 사용하여 Windows에서 창 핸들에 액세스하는 방법이 있습니까? 난 항상 창 위에 항상 깃발을 치고 싶다. 이상적으로 나는 이것을 위해 windows script host를 사용할 것이다.WSH 또는 WMI 또는 이와 유사한 방법을 사용하여 Windows에서 창 핸들에 액세스하는 방법이 있습니까?

해당 시스템에 PowerShell을 설치하고 싶지 않습니다. 우리는 추가 소프트웨어에 신경이 쓰이며 이미 일부 VBS 파일이 관련되어 있습니다.

감사합니다,

답변

0
Private Const Firefox = "C:\App32\Mozilla Firefox\firefox.exe" 
Private Const IE8  = "C:\App32\Internet Explorer\iexplore.exe" 
Private Const Opera = "C:\App32\Opera\opera.exe" 
Private Const Chrome = "C:\App32\Google\Chrome\Application\new_chrome.exe" 
Private Const Safari = "C:\App32\Safari\Safari.exe" 

Private Const ShowTime =20000 
Private Const TechWait =200 
Private Const CloseWait =1000 

If WScript.Arguments.Count <1 then 
      Wscript.Echo "URL not found!"   & vbCrLf &_ 
                vbCrLf &_ 
      "ex 1: "        & vbCrLf &_ 
     Wscript.ScriptName & " ""<URI>"  & vbCrLf &_ 
     "ex 2: "        & vbCrLf &_ 
     Wscript.ScriptName & " ""http://www.google.com" 

     Wscript.Quit(10) 
End If 

Set oShell=CreateObject("Wscript.Shell") 

Set oCommand=oShell.exec(Firefox & " " & WScript.Arguments(0)) 
FirefoxPid=oCommand.ProcessID 

Set oCommand=oShell.exec(IE8  & " " & WScript.Arguments(0)) 
IE8Pid=oCommand.ProcessID 

Set oCommand=oShell.exec(Opera  & " " & WScript.Arguments(0)) 
OperaPid=oCommand.ProcessID 

Set oCommand=oShell.exec(Chrome & " " & WScript.Arguments(0)) 
ChromePid=oCommand.ProcessID 

Set oCommand=oShell.exec(Safari & " " & WScript.Arguments(0)) 
SafariPid=oCommand.ProcessID 


WScript.Sleep ShowTime 

oShell.AppActivate(FirefoxPid) 
WScript.Sleep TechWait 
oShell.SendKeys "%{F4}" 

WScript.Sleep CloseWait 

oShell.AppActivate(IE8Pid) 
WScript.Sleep TechWait 
oShell.SendKeys "%{F4}" 

WScript.Sleep CloseWait 

oShell.AppActivate(OperaPid) 
WScript.Sleep TechWait 
oShell.SendKeys "%{F4}" 

WScript.Sleep CloseWait 

oShell.AppActivate(ChromePid) 
WScript.Sleep TechWait 
oShell.SendKeys "%{F4}" 

WScript.Sleep CloseWait 

oShell.AppActivate(SafariPid) 
WScript.Sleep TechWait 
oShell.SendKeys "%{F4}" 

Set oCommand = Nothing 
Set oShell = Nothing 
+0

설명 할 수 있습니까? 핵심 부분은 무엇이며 작동하는 이유는 무엇입니까 – ArtB

+0

wmic 프로세스에서 CommandLine, Description, Handle을 얻습니다 ... wmi – STTR

+1

답변을 추가하여 설명을 추가하려고합니다. 새로운 사용자가 SO 응답 스타일 및 관습에 조언을 제공 할 수있게 리뷰의 일부로 답변에 대해 답변 할 수 있습니다. – ArtB

0
Private Const wbemFlagReturnImmediately = 16 
Private Const wbemFlagForwardOnly  = 32 

Dim strComputer, objWMIService, strUserName, strPassword 

UserName = "" 
Password = "" 
strComputer = "." 

Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",strUserName,strPassword) 

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) 
For Each objItem in colItems 
    WScript.Echo objItem.Caption, objItem.ProcessId, objItem.Commandline 
Next 

이 ... WMIC의 클래스하여 Win32_Process> C 참조 : \ 4.html

(이름 = 'eclipse.exe라는')가 명령 행을 얻을

WMIC 과정, ProcessId

새로운 wmi-winApi 함수가 필요할 경우 mof 파일을 만들고 컴파일 할 수 있습니다 ...

http://msdn.microsoft.com/en-us/library/windows/desktop/aa393907(v=vs.85).aspx