Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 4966 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
Batch & Shell
Eventlog Druckjobs mit VBS auslesen (4)

Frage von joni2000de zum Thema Batch & Shell ...

Batch & Shell
gelöst Vbs programm unabhängig vom Speicherort ausführen (2)

Frage von Markus2016 zum Thema Batch & Shell ...

XML
gelöst Vbs - simple XML Datei auslesen (4)

Frage von DeeJayBee zum Thema XML ...

Batch & Shell
gelöst Batch: CPU-Auslastung eines Prozesses auslesen und als Variable definieren (3)

Frage von tralveller zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(3)

Information von LordGurke zum Thema Humor (lol) ...

Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Microsoft Office

Text in Zahlen umwandeln

Tipp von logische zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (38)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
Gruppenrichtlinie greift nicht zu! (24)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...