Avatar billede _carsten Nybegynder
23. april 2006 - 09:42 Der er 4 kommentarer og
2 løsninger

Sætte app i focus/aktiv

Hej

Er det muligt at lave et vb script som kan bringe en kørende applikation i focus / gøre den aktiv.

Hvis eksempel notepad er startet, er det så muligt udfra procesnavn eller PID at aktivere notepad.

Jeg forestiller mig en bat fil der afvikler et script, scriptet tager et PID eller procesnavn som parameter.

Kan det laves ???
Avatar billede snowball Novice
23. april 2006 - 11:14 #1
Ved ikke om det kan gøres direkte, men ellers så kan du bruge "CMDOW Commandline Window Utility" fra http://www.commandline.co.uk/cmdow/

"Cmdow is a Win32 commandline utility for NT4/2000/XP/2003 that allows windows to be listed, moved, resized, renamed, hidden/unhidden, disabled/enabled, minimized, maximized, restored, activated/inactivated, closed, killed and more."
Avatar billede _carsten Nybegynder
23. april 2006 - 12:07 #2
Ikke lige det jeg gik efter, men jeg kigger på det

Fandt i øvrigt dette script, som starter notepad kan det modificeres
så det det starter processen HVIS notepad allerede kører.

strComputer = "localhost"
Set objWMIService = GetObject _
    ("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

Error = objWMIService.Create("notepad.exe", null, null, intProcessID)
If Error = 0 Then
    Wscript.Echo "Notepad was started with a process ID of " _
        & intProcessID & "."
Else
    Wscript.Echo "Notepad could not be started due to error " & _
        Error & "."
End If



Dette script stopper en kørende process

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcessList
    objProcess.Terminate()
Next
Avatar billede _carsten Nybegynder
23. april 2006 - 17:37 #3
Følgende script gør det jeg ønsker, kan køres fra bat fil med et PID som parameter
Avatar billede _carsten Nybegynder
23. april 2006 - 17:37 #4
Og så lige scriptet

Dim ArgObj, pid
Set ArgObj = WScript.Arguments

'First parameter
pid = ArgObj(0)

'Clear object out of memory
set ArgObj = Nothing

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where ProcessID = " & pid)

If colProcessList.Count = 0 Then
    Wscript.Echo app&" is not started."
Else
    set WshShell=wscript.createobject("wscript.shell")
    WshShell.AppActivate pid
End If
Avatar billede _carsten Nybegynder
23. april 2006 - 17:38 #5
Tillader mig at tage største delen af point, da jeg selv fandt løsningen
Avatar billede snowball Novice
23. april 2006 - 17:49 #6
Det er OK :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester