Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 02:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Progamme über PID ansprechen

Discussion on Progamme über PID ansprechen within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
luli-1's Avatar
 
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
luli-1 is offline  
Old 02/28/2013, 12:39   #2
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by luli-1 View Post
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.
lolkop is offline  
Thanks
1 User
Old 02/28/2013, 14:54   #3
 
luli-1's Avatar
 
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
Quote:
Originally Posted by lolkop View Post
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)
luli-1 is offline  
Old 02/28/2013, 15:01   #4
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by luli-1 View Post
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...
lolkop is offline  
Old 02/28/2013, 15:29   #5
 
luli-1's Avatar
 
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
Quote:
Originally Posted by lolkop View Post
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
luli-1 is offline  
Old 02/28/2013, 16:26   #6
 
butter123's Avatar
 
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
butter123 is offline  
Thanks
1 User
Old 02/28/2013, 17:25   #7
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by luli-1 View Post
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 View Post
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...
lolkop is offline  
Thanks
1 User
Old 02/28/2013, 17:48   #8
 
luli-1's Avatar
 
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
Quote:
Originally Posted by lolkop View Post

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
luli-1 is offline  
Old 02/28/2013, 19:03   #9
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by luli-1 View Post
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.
lolkop is offline  
Old 02/28/2013, 19:14   #10
 
luli-1's Avatar
 
elite*gold: 0
Join Date: Oct 2011
Posts: 445
Received Thanks: 102
Quote:
Originally Posted by lolkop View Post
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
luli-1 is offline  
Old 03/01/2013, 16:51   #11
 
-STORM-'s Avatar
 
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
-STORM- is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.