| |
|
|
- page 1 - |
|
Nico Madysa | je ne sais pas so droite, woran es liegt, mais depuis Kruzem spinnen qui Funktionen zum trouver de Windows. FindWindow() schmiert ab, si ne...aucune la fenêtre trop qui masque passt. AddWindows klappt garnicht. (pouvoir beim Verwenden den Adler) Liegt cela à XProfan10 ou bien plutôt à ME? |
|
|
| |
|
|
| |
|
- page 2 - |
|
|
GDL | allô Nico,
chez mir läufts aussi.
salut Georg |
|
|
| |
|
|
|
Frank Abbing | chez mir aussi. la hâte peut-être quoi avec COM ou bien OLE pas dans Ordre? une qui Dlls |
|
|
| |
|
|
|
| allez chez mir aussi Windows98 SE). |
|
|
| |
|
|
|
Sebastian Sprenger | allô zusammen, je hab qui Source dans diesem Fil maintenant zwar pas getestet, peux Nicos Probleme mais nachvollziehen. mon Programme dans Profan 7.0e avons sich früher sous Windows ME (et si je mich droite erinnere, aussi sous Windows 98) à cause de qui Profan-Funktion FindWindow aussi aufgehängt. Inzwischen hab je vous par qui API-Funktion ersetzt, seitdem passierte es dans denselben Programmen nie wieder.
justement plan J'ai eu nochmal un Testprogramm avec FindWindow et AddWindows geschrieben et jeweils im Interpreter et dans qui Runtime de Profan 5.0 et Profan 7.0e gestartet. Hat sich aussi wieder alles aufgehängt. Pour einem Neustart de Windows ME funktionierte es correcte et je konnte après aucun Abstürze plus reproduzieren.
Programmcode scheint incidemment völlig égal trop son, es passierte comment dit déjà dans meinen fertigen Programmen (pas sous 500 Zeilen) sowie dans sinnfreien Einzeilern (alors sans Variablen ou bien irgendwelche Ausgaben).
sous Windows XP dagegen funktionierte alles toujours. Salut, Sebastian |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 25.11.2006 ▲ |
|
|
|
|
| comment oui c'est ca sieht cela Aufhängen aus? quelle API verwendest du, um Findwindow trop ersetzen?
sous qui API EnumWindows findet on que voici:
The EnumWindows function does not enumerate child windows. This function is more reliable than calling le GetWindow function dans a loop. à application that calls GetWindow to perform this task risks being caught dans à infinite loop or referencing a handle of a window that has been destroyed.
quelle API steckt derrière FindWindow? Könnte oui aussi solche Ursachen avons... |
|
|
| |
|
|
|
Sebastian Sprenger | allô Andreas, beim Aufhängen gibts pas viel trop voyons: Profan pouvoir d'abord sa travail, et sobald es sur qui Profan-Funktion FindWindow stößt, pouvoir Profan gar rien plus et peut sich seulement encore sur Strg+vieux+Entf et ca. 10 Sekunden attendre finissons. aucun Fehlermeldungen, BlueScreens ou bien dergleichen. je benutze qui API FindWindow avec lpClassName = 0 et lpWindowName = Stringadresse. Salut, Sebastian |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 26.11.2006 ▲ |
|
|
|
|
RGH | là es chez qui Profan-Funktion FindWindow() possible son soll, seulement den Anfang des Fenstertitels anzugeben (important chez Programmen, qui den aktuellen Dateinamen à den Fenstertitel anhängen), verwende je pas qui API FindWindows (ou bien FindWindowEx), mais folgende Funktion (Delphicode): KompilierenMarqueSéparationIPar1 := GetWindow(GetDesktopWindow,GW_Child);
IPar1 := GetWindow(IPar1,GW_HWndFirst);
SendMessage(IPar1,wm_GetText,32767,LongInt(Addr(C2)));
While (StrLIComp(C1,C2,E)<>0) And (IPar1 <> 0) Do Begin
IPar1 := GetWindow(IPar1,GW_HWndNext);
SendMessage(IPar1,wm_GetText,32767,LongInt(Addr(C2)));
>;
dans C1 (nullterminierter String) steht qui à FindWindow übergebene paramètre, IPar1 wird retour. quoi pouvoir qui Funktion oui c'est ca? la ligne 1: je ermittele cela erste Kindfenster des Bildschirmhintergrundes (GetDeskTopWindow) la ligne 2: je ermittele cela erste Anwendungsfenster. Gibt es keins, hat IPar1 la valeur 0. la ligne 3: je ermittele den Fenstertitel cet Fensters. cette steht eh bien dans C2 (nullterminierter String). la ligne 4: Solange String C1 pas dem Anfang des Cordes C2 entspricht et IPar 1 ungleich 0 ist ... (avec anderen Worten: qui Boucle wird abgebrochen, si ne...aucune weiteres la fenêtre existiert ou bien un passendes trouvé wurde) la ligne 5: là encore ne...aucune passendes la fenêtre trouvé wurde, ermittele je cela prochain la fenêtre ... la ligne 6: ... et dessen Fensteritel la ligne 7: et plus avec qui Boucle (entspricht dem Endwhile dans Profan).
Kurz: qui Boucle wird sortir de, si un la fenêtre trouvé wurde, dessen Fenstertitel avec dem übergebenen String beginnt (ensuite hat IPar1cela entsprechende Handle) ou bien ne...aucune weiteres la fenêtre existiert (ensuite hat IPar1 la valeur 0). Es sollte alors keinen le cas donner, dans dem cet Boucle endlos fonctionne.
chez mir tritt cette le cas aussi nie sur. chez wem es anders ist, qui sollte simple la fois obige Routine dans XProfan umsetzen et ausprobieren. ensuite devrait sich ermitteln laisser, quoi là de travers fonctionne. ici qui Rouitine dans XProfan: KompilierenMarqueSéparation $H windows.ph
$H messages.ph
Proc XFindWindow
Paramètres C1$
declare IPar1%, C2$
C2$ = Space$(32767)
IPar1% = ~GetWindow(~GetDesktopWindow(), ~GW_Child)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndFirst)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
Tandis que (Left $(C2$, Len(C1$)) <> C1$) And (IPar1% <> 0)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndNext)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
Endwhile
Retour IPar1%
ENDPROC
CLS
Imprimer Ergebnis = + Str$(XFindWindow(XProfan))
WaitInput
Fin
Pour jegliche Infos suis je reconnaissant.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 26.11.2006 ▲ |
|
|
|
|
Sebastian Sprenger | allô Roland, habs sous Windows ME probiert. Es liegt sur jeden le cas à WM_GETTEXT dans Zusammenhang avec Windows, qui pas réagir.
je hab erstmal irgendein Programme abstürzen et ensuite qui FindWindow-Routine courir laisser. cet lief seulement plus, comme je cela pas plus reagierende Programme sur den Taskmanager finissez hatte.
Irgendwann donnais GetWindow(IPar1, GW_HWndNext) ensuite sur einmal un Handle zurück, chez dem WM_GETTEXT stecken blieb, trop dem sich aussi sonst rien ermitteln ließ et cela avec Sicherheit aussi pas im Taskmanager auftauchte. Salut, Sebastian |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 26.11.2006 ▲ |
|
|
|
|
| sous XP J'ai eu chez einigen speziellen Windows également la fois cela Problem, cela mon Proggi ([...] ) beim Ermitteln des Fenstertextes sur WM_GETTEXT une Abgang machte. j'ai ensuite qui API GetWindowText verwendet, cela klappte bestens (ist mais pas qui idealste Weg). aussi qui API SendMessageTimeout pourrait on la fois versuchen, avec cela regele je cela maintenant dans [...] . |
|
|
| |
|
|
|
Nico Madysa | OK, merci pour qui Aider à alle. avec cela wäre zumindest FindWindow() geklärt. mais quoi ist avec AddWindows? Gibt es pour aussi un Walk-Around? |
|
|
| |
|
|
|
| Dürfte cela selbe Problem son. |
|
|
| |
|
|
|
Nico Madysa | Suppi, alors ist que voici qui/qui/cela Walk-Around: KompilierenMarqueSéparation $H windows.ph
$H messages.ph
Proc XAddWindow
Parameters C1$
declare IPar1%, C2$
C2$ = Space$(32767)
IPar1% = ~GetWindow(~GetDesktopWindow(), ~GW_Child)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndFirst)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
While (Left$(C2$, Len(C1$)) <> C1$) And (IPar1% <> 0)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndNext)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
AddString C2$
EndWhile
ENDPROC
ou bien? |
|
|
| |
|
|