Entwickler-Ecke

Windows API - Wie dauerhaft sind die ID's bei Handles?


alexschultze - Di 03.06.03 23:08
Titel: Wie dauerhaft sind die ID's bei Handles?
hi,

bevor Luckie jetzt seinen Keybinding
Zitat:
Das habe ich glaube ich schon tausendmal gepostet.

einsetzt bitte erst durchlesen :)

Also: Ich habe mich noch mal kurz über Handles schlau gemacht. ID vom Fenster, ID vom Button und dann BM_Click. (bin ich gut? *h3h3*).

so, und jetzt ist die frage: mein programm wird auf wirklich verschiedenen Systemen ein bestimmes fremdes Programm starten und dort etwas klicken. Frage wäre: Wie genau und dauerhaft sind diese ID's ? Wäre es besser jedes mal die ID neu zu holen oder kann man die dauerhaft benutzen?

alex


Delete - Mi 04.06.03 01:23

Die VCL kennt keine ID's in diesem Sinne, wie sie die reine WinAPI kennt. Bei der VCL wird es Windows ueberlassen eine ID aus dem Handle zu bilden. Hast du also eine Anwendung mit der VCL erstellt, kannst du die ID eines Steuerelementes als eindeutiges Identifikationsmerkmal vergessen, da sie sich wie auch das Handle bei jedem Proghramm start aendert.
Ansonsten bleibt eine ID immer die gleiche, da sie mit in der Ressource der Anwendung steckt. Aber eine ID muss, im Gegensatz zu einem Handle, nicht eindeutig sein. So kann es mehrere Controlls mit der ID -1 geben. Das passiert dann, wenn man zum Beispiel mit dem VC Ressourcen-Editor eine Dialog-Ressource erstellt und VC die resource.h Datei nicht mehr findet, in der immer die naechste verfuegbare ID steht. Dann vergibt VC fuer das Controll automatisch -1 und das fuehrt zu keinem Fehler beim kompilieren der Ressource.

Zu deinem problem: Wie willst du die ID jedesmal neu holen? Du kannst waerend der Entwicklung die ID mit gewissen Tools (WinSight, Spy++) "ausspionieren" und die dann im Programm hardcoden und solltes dann auf verschiedenen Systemen keine Probleme haben.


alexschultze - Mi 04.06.03 09:55

so ich glaube ich habe es.
;)


danke