|
You last visited: Today at 02:04
Advertisement
Progamme über PID ansprechen
Discussion on Progamme über PID ansprechen within the AutoIt forum part of the Coders Den category.
02/28/2013, 10:12
|
#1
|
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
|
Progamme über PID ansprechen
Folgendes Problem.
Ich habe mehrere instanzen eines Programms mit dem selben (Titel)Namen.
Daher kann ich leider nicht mit Fenstertiteln arbeiten womit ich einfach WinSetState benutzen könnte.
ich habe über eine Schleife jetzt mir die dementsprechenden PID rausgefischt finde aber keine lösung wie ich die PID jetzt beutzen kann um die fenster auf @SW_HIDE bzw wieder auf @SW_SHOW zu setzen hat jemand eine lösung ?
Wäre über jede hilfe dankbar!
Mit freundlichen Grüßen
Luli1
|
|
|
02/28/2013, 12:39
|
#2
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by luli-1
Folgendes Problem.
Ich habe mehrere instanzen eines Programms mit dem selben (Titel)Namen.
Daher kann ich leider nicht mit Fenstertiteln arbeiten womit ich einfach WinSetState benutzen könnte.
ich habe über eine Schleife jetzt mir die dementsprechenden PID rausgefischt finde aber keine lösung wie ich die PID jetzt beutzen kann um die fenster auf @SW_HIDE bzw wieder auf @SW_SHOW zu setzen hat jemand eine lösung ?
Wäre über jede hilfe dankbar!
Mit freundlichen Grüßen
Luli1
|
ein prozess kann sehr viele fenster haben, wodurch eine derartige funktion nicht existieren kann...
du solltest vielleicht lieber mit WinList arbeiten, um tatsächlich alle fenster auf einen schlag auszulesen...
alternativ kannst du natürlich mit exponentiell erhöhtem aufwand, jeweils alle fenster zu jedem prozess bestimmen, indem du zunächst eine prozess liste erstellst, und danach per winlist alle fenster auf dem pc durchläufst, und diese auf die zugehörige pid prüfst, um so eine eindeutige zuordnung erstellen zu können.
|
|
|
02/28/2013, 14:54
|
#3
|
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
|
Quote:
Originally Posted by lolkop
ein prozess kann sehr viele fenster haben, wodurch eine derartige funktion nicht existieren kann...
du solltest vielleicht lieber mit WinList arbeiten, um tatsächlich alle fenster auf einen schlag auszulesen...
alternativ kannst du natürlich mit exponentiell erhöhtem aufwand, jeweils alle fenster zu jedem prozess bestimmen, indem du zunächst eine prozess liste erstellst, und danach per winlist alle fenster auf dem pc durchläufst, und diese auf die zugehörige pid prüfst, um so eine eindeutige zuordnung erstellen zu können.
|
die zugehörigen PID habe wie wiegesagt schon ich brauch nurnoch hilfe wie ich sie dazu verwenden kann um diese fenster anzusprechen.(jeder prezess hat in diesemfall nur 1 fenster)
|
|
|
02/28/2013, 15:01
|
#4
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by luli-1
die zugehörigen PID habe wie wiegesagt schon ich brauch nurnoch hilfe wie ich sie dazu verwenden kann um diese fenster anzusprechen.(jeder prezess hat in diesemfall nur 1 fenster)
|
deine denkweise ist wie gesagt schlecht...
um die zugehörigen fenster zu einer pid zu ermitteln, musst du die gesamtmenge an fenstern durchlaufen.... es wäre deutlich sinnvoller direkt mit dieser zu arbeiten, um dir so eine schleife zu ersparen.
in der regel speichern alle prozesse ihre eigenen fensterhandles irgendwo im speicher. alternativ könntest du also auch einfach das fensterhandle aus dem speicher auslesen... das ändert aber nichts darann das es viel effizienter wäre direkt mit einer liste der fenster handles zu arbeiten...
um die lästige raterei, was du überhaupt machst abzukürzen, könntest du ja einfach mal dein script in kombination mit dem windowinfo stats deines ziels zeigen, damit man dir auch helfen kann...
|
|
|
02/28/2013, 15:29
|
#5
|
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
|
Quote:
Originally Posted by lolkop
deine denkweise ist wie gesagt schlecht...
um die zugehörigen fenster zu einer pid zu ermitteln, musst du die gesamtmenge an fenstern durchlaufen.... es wäre deutlich sinnvoller direkt mit dieser zu arbeiten, um dir so eine schleife zu ersparen.
in der regel speichern alle prozesse ihre eigenen fensterhandles irgendwo im speicher. alternativ könntest du also auch einfach das fensterhandle aus dem speicher auslesen... das ändert aber nichts darann das es viel effizienter wäre direkt mit einer liste der fenster handles zu arbeiten...
um die lästige raterei, was du überhaupt machst abzukürzen, könntest du ja einfach mal dein script in kombination mit dem windowinfo stats deines ziels zeigen, damit man dir auch helfen kann...
|
Mh ich weiß nicht ob wir an einander vorbei reden oder ob ich hier grade grade einfach falsch denke. Also ich habe über process list wie du auch schon geschrieben hattest die nötigen infos zu meinem (in dem fall 8 progammen) rausgefunden.Da ich damit aber nur die pid und den titel zurück bekomme und die titel bei allen 8 gleich sind kann ich damit nichts anfangen. Also versuch ichs jetzt mit den pids. Jetzt ist meine frage wie ich mit den pids ein zurgiff auf das fenster bekomme (command) damit ich es auf hide setzen kann
weil z.b. WinSetState($list[$i][1]),"",@SW_HIDE) würde nicht funktionieren weil die methode mit titel arbeitet
und WinSetState($list[$i][0]),"",@SW_HIDE) würde nicht funktionieren weil alle fenster den gleichen titel haben und essomit nur eins davon anspricht
ps: über windows info bekomm ich nicht viele infos raus zummindest keine die ich verwenden könnte
|
|
|
02/28/2013, 16:26
|
#6
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
|
|
|
02/28/2013, 17:25
|
#7
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by luli-1
Mh ich weiß nicht ob wir an einander vorbei reden oder ob ich hier grade grade einfach falsch denke. Also ich habe über process list wie du auch schon geschrieben hattest die nötigen infos zu meinem (in dem fall 8 progammen) rausgefunden.Da ich damit aber nur die pid und den titel zurück bekomme und die titel bei allen 8 gleich sind kann ich damit nichts anfangen. Also versuch ichs jetzt mit den pids. Jetzt ist meine frage wie ich mit den pids ein zurgiff auf das fenster bekomme (command) damit ich es auf hide setzen kann
weil z.b. WinSetState($list[$i][1]),"",@SW_HIDE) würde nicht funktionieren weil die methode mit titel arbeitet
und WinSetState($list[$i][0]),"",@SW_HIDE) würde nicht funktionieren weil alle fenster den gleichen titel haben und essomit nur eins davon anspricht
|
ich verstehe schon ganz genau was du machst... das problem, welches ich versuche dir zu erklären ist, das das leider sehr unsinnig ist...
man könnte deinen wunsch sicher so lösen:
Code:
Func getWindowHandlesFromPid($pid)
Local $index=0, $return[1]=[-1], $hwnds=WinList()
For $i=1 To $hwnds[0][0]
If WinGetProcess($hwnds[$i][1])=$pid Then
If $return[0]<>-1 Then
$inxdex = UBound($return)
ReDim $return[$index+1]
EndIf
$return[$index] = $hwnds[$i][1]
EndIf
Next
Return $return
EndFunc
das ganze führt aber wie bereits gesagt zu einer sinnlosen, exponentiellen aufwandssteigerung, da man auch von vornherein mit WinList arbeiten kann...
Quote:
Originally Posted by luli-1
ps: über windows info bekomm ich nicht viele infos raus zummindest keine die ich verwenden könnte
|
jedes fenster in windows besitzt einen titel und einen class-name. beides in kombination reicht IMMER aus ein fenster genau zu identifizieren.
arbeitet man mit fenster operationen, so sollte man immer über WinList starten, da es deutlich effizienter ist, einem fenster einen prozess zuzuordnen, als andersherum.
fenster->prozess <-- 1 befehl
prozess->fenster <-- n befehle (wobei n = anzahl aller geöffneten fenster)
man löst das ganze also entweder mit einem auszuführendem befehl oder mit sehr viel mehr ausführungen, so wie du es geplant hast...
|
|
|
02/28/2013, 17:48
|
#8
|
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
|
Quote:
Originally Posted by lolkop
das ganze führt aber wie bereits gesagt zu einer sinnlosen, exponentiellen aufwandssteigerung, da man auch von vornherein mit WinList arbeiten kann...
jedes fenster in windows besitzt einen titel und einen class-name. beides in kombination reicht IMMER aus ein fenster genau zu identifizieren.
arbeitet man mit fenster operationen, so sollte man immer über WinList starten, da es deutlich effizienter ist, einem fenster einen prozess zuzuordnen, als andersherum.
fenster->prozess <-- 1 befehl
prozess->fenster <-- n befehle (wobei n = anzahl aller geöffneten fenster)
man löst das ganze also entweder mit einem auszuführendem befehl oder mit sehr viel mehr ausführungen, so wie du es geplant hast...
|
Achso! jetzt versteh ich was du meinst. Ja die Lösung ist ja eigentlich ganz einfach.... wusste nicht das ich einfach das handle benutzen kann statt des Titels....
danke vielmals... es klappt
|
|
|
02/28/2013, 19:03
|
#9
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by luli-1
Achso! jetzt versteh ich was du meinst. Ja die Lösung ist ja eigentlich ganz einfach.... wusste nicht das ich einfach das handle benutzen kann statt des Titels....
danke vielmals... es klappt 
|
ich hoffe du hast verstanden, das ich das codebeispiel nur gepostet habe, um zu zeigen wie es NICHT gemacht werden sollte.
|
|
|
02/28/2013, 19:14
|
#10
|
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
|
Quote:
Originally Posted by lolkop
ich hoffe du hast verstanden, das ich das codebeispiel nur gepostet habe, um zu zeigen wie es NICHT gemacht werden sollte.
|
ja hab ich  ärgere michs chon die ganze zeit über meine eigene dummheit
|
|
|
03/01/2013, 16:51
|
#11
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
Bin mir jetzt nicht sicher, ob ich dich richtig verstanden habe.
Gehört jedes Fenster zu einem eigenen Prozess, also sind die PIDs verschieden?
Wenn ja ginge es so:
Code:
Func _GetHwndFromPID($pid)
Local $i, $winlist = WinList()
For $i = 1 To $winlist[0][0]
If WinGetProcess($winlist[$i][1]) = $pid And $winlist[$i][0] <> "" Then Return $winlist[$i][1]
Next
Return -1
EndFunc ;==>_GetHwndFromPID
|
|
|
 |
Similar Threads
|
HI,, guy (pursuit progamme like OPEN-STEALTH
07/31/2012 - DarkOrbit - 5 Replies
hi guy , i learn java,and html etc.... so today i decide to create programme to take palladium like OPEN-STEALTH OR make BOT
when i was starting i saw this one in internalMapRevolution$
http://postimage.org/image/43jx85f3v/full/
you know when you use bot they send you captcha
i think that s mean
|
String/Bilder in externe progamme integrieren
04/18/2012 - C/C++ - 9 Replies
Hallo leute ich suche eine möglichkeit Strings oder auch Bilder in z.b. Spiele zu integrieren bisher habe ich mit autoit über die GdiPlus.au3 gearbeitet was aber etwas umständlich und dazu nicht grade schön ist da es flakert
Kennt ihr eine möglichkeit ich finde leider nichts... wäre über jeden tipp dankbar
PS wenn jemand eine möglichkeit über java kennt wäre ich natürlich auch dankbar
|
Windows 7 - Progamme deinstallieren
11/04/2010 - Technical Support - 7 Replies
Hallo e*pvp,
Ich glaube ich hab viele Nutzlose Programme auf dem PC und ich wollte euch mal fragen was ich da alles entfernen könnte..
ernste Antworten ;/]
Bild1: http://www.abload.de/img/pc1m5kf.png
Bild2: http://www.abload.de/img/pc2pux0.png
LG,
_Cube
|
All times are GMT +1. The time now is 02:05.
|
|