Creepy 0 Geschrieben 27. November 2013 Melden Teilen Geschrieben 27. November 2013 Hallo liebe Gemeinde Ich habe hier ein VBScript laufen, welches mit sendkeys arbeitet. Seltsamerweise schaltet sich dabei jedesmal NUMLOCK aus, obwohl es nicht im Script vorkommt. An was kann das bitte liegen? Ich füge das Script hier mal an. Es prüft, ob ein oder mehrere gleiche Prozesse laufen und schickt ihnen dann 2 Tasten (Pfeil links + Pfeil rechts). Das funktioniert soweit auch. Es geht mir nur um dieses verflixte NUMLOCK. :confused: Für jeden Tip dazu wäre ich natürlich herzlich dankbar! LG Creepy On Error Resume NextSet WshShell = Wscript.CreateObject("WScript.Shell")Set args = WScript.ArgumentsstrComputer = "."num = args.Countif num = 0 then n = 200000else n = args(0)end ifDo Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process") numCount = 0 For Each objProcess in colProcessList If Instr(1, objProcess.Name, "XYZ.exe") then numCount = numCount + 1 End If Next If numCount = 0 then Exit Do End If For Each objProcess in colProcessList colPID = objProcess.processID colName = objProcess.Name If Instr(1, colName, "XYZ.exe") then WshShell.AppActivate colPID WshShell.sendkeys "%{left}" WshShell.sendkeys "%{right}" End If Next Wscript.sleep nLoopMsgBox "No running instance of XYZ found.",0,"myscript" Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 27. November 2013 Melden Teilen Geschrieben 27. November 2013 Das Problem ist bekannt und so alt wie SendKeys sind. Verzichte auf SendKeys, schon wird Numlock nicht mehr angefasst. Was genau macht das Script? Einen Prozess finden und eliminieren? Zitieren Link zu diesem Kommentar
Creepy 0 Geschrieben 27. November 2013 Autor Melden Teilen Geschrieben 27. November 2013 (bearbeitet) Das Script testet alle X Sekunden, ob ein bestimmtes Programm gerade läuft (kann auch mehrfach laufen), holt es in den Vordergrund und schickt ihm/ihnen die 2 Tasten (Steuerkommandos). Wenn kein Prozess läuft, oder wenn der User das Programm beendet hat, soll sich auch das Script beenden. Das Script läuft in einer Ablaufsteuerung und wird per cronjob alle 3 Stunden neu ausgeführt, falls es nicht noch selbst läuft. An der Tastatur hier ist das zwar kein echtes Problem, aber sehr lästig, wenn man nebenbei noch Abrechungen machen will, dabei blind auf dem Ziffernblock tippt und dann hinterher feststellen muss, daß die Zahlen nicht eingegeben wurden. Wie kann man denn einem Programm, außer mit Sendkeys, noch einen Tastendruck übermitteln? Vielen lieben Dank schon mal. ;) bearbeitet 27. November 2013 von Creepy Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 27. November 2013 Melden Teilen Geschrieben 27. November 2013 Ich hatte überlegt ob es vielleicht eine Möglichkeit mit VB.NET gibt, da müsste man sich allerdings mit dem Programm auseinandersetzen und prüfen ob man evtl. etwas 'abkürzen' kann. Schau dir diese Beispiele für Access an, evtl. kannst Du etwas 'umsetzen': http://www.donkarl.com?FAQ6.6 Setz doch mal den Parameter, von dem hier gesprochen wird: http://www.donkarl.com?FAQ7.8 Ist zwar Access, VB-Script sollte nicht so weit weg davon sein. 1 Zitieren Link zu diesem Kommentar
Creepy 0 Geschrieben 29. November 2013 Autor Melden Teilen Geschrieben 29. November 2013 Danke für die Links. :) Den Parameter gibt es laut MSDN nicht in VBS. http://msdn.microsoft.com/en-us/library/8c6yea83%28v=vs.84%29.aspx Auch sowas wie Postmessage oder Sendmessage fällt vermutlich flach. Zumindest kann ich dazu kein funktionierendes Beispiel "ergoogeln". Werd ich wohl mit der "dunklen LED" leben müssen. So weltbewegend tragisch ist das ja nicht. Trotzdem vielen Dank nochmal für die nette Hilfe. ;) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.