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 ?
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.
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)
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...
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
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...
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....
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.
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
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