Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Möglichkeiten um Cursor in Programm zu positionieren und dazugehörige Prozess-ID auslesen - mit VBS

Frage Entwicklung

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

23.11.2010 um 20:48 Uhr, 4984 Aufrufe, 10 Kommentare

Hi,

ich suche eine Möglichkeit, den Cursor in einem Programm in eine bestimmte Zelle zu setzen. Das Problem ist, dass beim Öffnen des Programms der Cursor niergens steht. Mit TAB kann ich hierbei also nicht arbeiten. Durch die Programmierung will ich die Verwendung der Maus überflüssig machen.

Zudem muss ich die Prozess-ID von diesem Programm auslesen. Dazu habe ich folgendes kleines Programm gefunden, allerdings bekomme ich es nicht umgeschrieben, so dass ich die Prozess-ID mithilfe einer Variable weiterverwenden kann (http://forum.fachinformatiker.de/basic/80573-vbs-pid-auslesen.html):

strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcessList
msgbox objProcess.ProcessId
Next

Die ID benötige ich, um anschließend das Programm in den Vordergrund legen kann.

Das Ganze sollte mit VBS programmiert werden.

Ich bin für jede Hilfe dankbar.

Schöner Abend noch
Matze
Mitglied: bastla
23.11.2010 um 21:56 Uhr
Hallo mabue88!
allerdings bekomme ich es nicht umgeschrieben, so dass ich die Prozess-ID mithilfe einer Variable weiterverwenden kann
Da sollte doch eine minimale Änderung reichen:
01.
strComputer = "." 
02.
Set objWMIService = GetObject _ 
03.
    ("winmgmts:\\" & strComputer & "\root\cimv2") 
04.
Set colProcessList = objWMIService.ExecQuery _ 
05.
    ("Select * from Win32_Process Where Name = 'Notepad.exe'") 
06.
For Each objProcess in colProcessList 
07.
    PID = objProcess.ProcessId 
08.
Next 
09.
MsgBox "Die Process-ID lautet: " & PID
Grüße
bastla
Bitte warten ..
Mitglied: mabue88
23.11.2010 um 22:09 Uhr
Hi bastla,

danke für deinen Beitrag.
Ich habs gleich mal ausprobiert, aber irgentwie bekomm ich das nicht richtig hin. In PID steht doch die Prozess-ID. Wie kann ich diese ID jetzt in den folgenden Code einbinden:

WshShell.AppActivate "PID" ???


Danke
Matze
Bitte warten ..
Mitglied: Fritzius
23.11.2010 um 23:31 Uhr
Hallo Matze,
Zitat von mabue88:
[...] allerdings bekomme ich es nicht umgeschrieben,
so dass ich die Prozess-ID mithilfe einer Variable weiterverwenden kann

strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcessList
msgbox objProcess.ProcessId
Next

Die ID benötige ich, um anschließend das Programm in den Vordergrund legen kann.

Du musst eigentlich auch nix umschreiben... - die von Dir gesuchte Prozess-ID steht doch in objProcess.ProcessID!
Lediglich den oben fett markierten Dateinamen -Edit- (wie er im Taskmanager steht) -/edit- ggf. durch den Dich Interessierenden ersetzen - und diesen dann mittels
WshShell.AppActivate (objProcess.ProcessID) aktivieren!
Bei meinem Versuch wurde das Programm (-edit- nach der Anzeige der Process-ID durch die 'msgbox' -/edit- eine Instanz von Notepad.exe) korrekt aktiviert (zu sehen unten in der Taskleiste); nach einem Druck auf ENTER kam das Programm dann (mit Cursor am Anfang der 1. Zeile) auch in den Vordergrund (läßt sich mittels 'SetFocus' o.ä. bestimmt auch noch automatisieren).

HTH und Grüssles

Martin
Bitte warten ..
Mitglied: bastla
23.11.2010 um 23:35 Uhr
Hallo mabue88!
Wie kann ich diese ID jetzt in den folgenden Code einbinden:
Da es sich bei der "Process-ID" um einen numerischen Wert handelt:
WshShell.AppActivate PID
[Edit]
@Fritzius
Zunächst: Willkommen im Forum!

Völlig richtig - eine Variable (PID) ist für diesen Zweck unnötig.
läßt sich mittels 'SetFocus' o.ä. bestimmt auch noch automatisieren
Da das Ganze in VBS ablaufen soll, wird ein Platzieren des Cursors im Editor-Fenster wohl nur über "SendKeys" möglich sein ...
[/Edit]

Grüße
bastla

P.S.: Code entsprechend formatiert zu posten ist übrigens gar nicht schwer: http://www.administrator.de/helpsystem/detail.php?idx=20#toc28
Bitte warten ..
Mitglied: mabue88
24.11.2010 um 00:11 Uhr
Hi,

ich hab eure Vorschläge gleich mal ausprobiert. Jedoch kommt bei mir immer eine Fehlermeldung:

Skript: C:\...
Zeile: 10
Zeichen: 1
Fehler: Objekt erforderlich: 'objProcess'
Code: 800A01A8
Quelle: Laufzeitfehler in Microsoft VBScript

Ich will hier noch erwähnen, dass ich was VBS und VBA / VB angeht ein blutiger Anfänger bin.


Hier nochmal der Code:
01.
strComputer = "." 
02.
Set objWMIService = GetObject _ 
03.
("winmgmts:\\" & strComputer & "\root\cimv2") 
04.
Set colProcessList = objWMIService.ExecQuery _ 
05.
("Select * from Win32_Process Where Name = 'EXCEL.exe'") 
06.
For Each objProcess in colProcessList 
07.
msgbox objProcess.ProcessId 
08.
Next 
09.
 
10.
WshShell.AppActivate (objProcess.ProcessID) 
11.
WScript.Sleep 200 
12.
WshShell.SendKeys "{ENTER}"
Bitte warten ..
Mitglied: bastla
24.11.2010 um 00:15 Uhr
Hallo mabue88!

"objProcess" existiert nur innerhalb der Schleife ...

Grüße
bastla
Bitte warten ..
Mitglied: mabue88
24.11.2010 um 00:18 Uhr
@bastla:
Ok,

das heisst, ich lege (so wie du es in deinem Beispiel gemacht hast) eine Variable an, in die ich in der Schleife die Process-ID schreibe, damit ich diese ID auch nach der Schleife verarbeiten kann!?

So funktionierts bei mir auch.

@all:
Hat noch jemand eine Idee zu der Sache mit dem Cursor?
Bitte warten ..
Mitglied: bastla
24.11.2010 um 00:23 Uhr
Hallo mabue88!
das heisst, ich lege (so wie du es in deinem Beispiel gemacht hast) eine Variable an
Nicht notwendiger Weise - da die PID später ja nicht mehr gebraucht wird, kommst Du auch ohne die Variable aus, wenn Du einfach Deine Zeile 10 vor Zeile 8 einfügst ...
Was hast Du eigentlich genau mit dem "Cursor-Platzieren" vor (insbesondere, da es - vielleicht ? - um Excel geht)?

Grüße
bastla
Bitte warten ..
Mitglied: mabue88
24.11.2010 um 00:28 Uhr
Also, zu dem Cursor-Problem:

ich habe ein Programm, das verschiedene Felder (eine Art Textfelder, die aber nicht bearbeitet werden können) hat, in denen verschiedene Daten stehen. Diese Daten können mit der Maus markiert und rauskopiert werden. Demzufolge können diese Daten auch mit der Tastatur rauskopiert werden (Strg+A,Strg+C, usw.).
Diese Daten müssen in eine Excel-Tabelle übertragen werden. Grundsätzlich bekomme ich das hin.

Allerdings, steht beim Öffnen des (ich bezeichne es jetzt einfach mal als) Quell-Programm, der Cursor in keinem der Textfelder, so dass ich mit TAB oder Shift-TAB durch die einzelnen Textfelder "navigieren" kann. Setze ich den Cursor händisch mit der Maus in ein Feld, funktioniert der Rest wunderbar.

Da ich die Eingabe mit der Maus weg haben will, muss ich auf irgenteine andere Art den Cursor in eines der Textfelder setzen.
Das Programm wird standartmässig immer an der gleichen Position auf dem Desktop geöffnet. Unabhänging davon was VBS kann und was nicht, wäre es von dem Punkt zumindest möglich, dass man z.B. sagt:

- Setze Maus auf Position (x,y) (Textfeldposition)
- Klicke 1x links

Der Rest würde dann mit TAB usw. gehen.

Bei weiteren Fragen einfach fragen .


Danke
Matze
Bitte warten ..
Mitglied: 76109
24.11.2010 um 01:01 Uhr
Hallo zusammen!

Excel in den Vordergrund zu holen, geht auch einfacher:
01.
Dim oShell, Result 
02.
 
03.
Set oShell = WScript.CreateObject("WScript.Shell") 
04.
Result = oShell.AppActivate("Microsoft Excel") 
05.
 
06.
If Result = True Then 
07.
    'Excel ist im Vordergrund 
08.
Else 
09.
    'Excel ist nicht gestartet 
10.
End If
Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Prozess-ID im Task-Manager
gelöst Frage von runasserviceWindows Tools3 Kommentare

Hallo, eine Frage in die Runde, weiß jemand zufällig warum die Prozess-ID (PID) unter Windows immer ein Vielfaches von ...

Monitoring
Traffic-Analysetool für Programme oder Prozesse
gelöst Frage von 90498Monitoring4 Kommentare

Hallo alle zusammen, ich habe eine ältere Kundin (etwa 70 Jahre), die sich vor Kurzem ihren ersten PC zugelegt ...

Batch & Shell
VBS Prozess anhand Fenstername beenden
gelöst Frage von goodbytesBatch & Shell5 Kommentare

Hallo, wie kann ich eine Batch mittels vbs anhand des Fenstertitels beenden? Die cmd.exe zeigt als Fenstertitel an: "Administrator: ...

Batch & Shell
Fenstername von Prozess anzeigen lassen (vbs)
Frage von goodbytesBatch & Shell3 Kommentare

Hallo, mittels des folgenden Codes kann ich einen bestimmten Prozess "abschießen": Wenn ich die Datei mittels IrfanView geöffnet habe ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 15 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 20 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 20 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Blogs
Immer wiederkehrende PHP Fehlermeldung bei Wordpress UTF-8 - ASCII
gelöst Frage von vcdweltBlogs11 Kommentare

Hi, seit einiger Zeit wird mein error_log meines Wordpress Blogs mit immer der gleichen Fehlermeldung überschwemmt. 14-Dec-2017 08:18:05 UTC ...

Switche und Hubs
Redundante L2 LWL Leitung über 2 Standorte - Spanning Tree - HP Equipment
gelöst Frage von ResolvSwitche und Hubs10 Kommentare

Hallo, ich stehe vor der Herausforderung eine Redundante L2 LWL Leitung über 2 Standorte herzustellen. Grundsätzliches Switching Know How ...