AttachProcess

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

AttachProcess

Beitrag von uweb »

Irgendwie scheint AttachProcess(Instanz) nicht aufgerufen zu werden.

myTestDLL001.pb

Code: Alles auswählen

Procedure AttachProcess(Instanz)
  Beep_(3000, 1000)
EndProcedure
myDLLTest001.pb

Code: Alles auswählen

 If OpenLibrary(0, "myTestDLL001.dll")
   MessageRequester("Info", "Zum deaktivieren OK drücken.", #PB_MessageRequester_Ok)
   CloseLibrary(0)
 EndIf
Zu Instanz habe ich nichts gefunden, aber ich nehme an es ist die ID des Prozess der die DLL aufruft.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

du rufst die funktion doch garnicht auf
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

es gibt 4 spezielle Prozeduren, die von Windows automatisch aufgerufen werden, wenn eines der folgenden Ereignisse auftritt:

- DLL wurde zu einem neuen Prozess hinzugefügt
- DLL wurde von einem Prozess entfernt
- DLL wurde zu einem neuen Thread hinzugefügt
- DLL wurde von einem Thread entfernt
.....
Danke trotzdem !
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Halt dich mal zurück, wenn du dich nicht mit DLLs auskennst! :twisted:

'AttachProcess' wird, wie 3 andere Prozeduren, von Windows automtisch aufgerufen, wenn die DLL von einem Programm geöffnet oder geschlossen wird.

Versuchs mal mit nem Messagerequester, uweb! Vielleicht liegt's ja an dem Piepen oder er Piept schon, aber dein PC ist zu leise eingestellt...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

wo kommt dieses Zitat den nher ? aus der hilfe?

//edit:
HIFLE hat geschrieben: Um diese Ereignisse zu verwalten, ist es möglich, 4 spezielle Prozeduren zu deklarieren: AttachProcess(Instanz), DetachProcess(Instanz), AttachThread(Instanz) und DetachThread(Instanz). Dies bedeutet, dass diese 4 Prozedur-Namen reserviert sind und vom Programmierer nicht für andere Zwecke verwendet werden können.
ah
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

dann sollte man es wenigstens mit Procedure DLL aufrufen. .würd ich mal sagen
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Genauuuuuu! Und soetwas hätte man gewusst, wenn man sich das Kapitel DLL wenigstens mal angeschaut hätte, wenn man schon nicht damit arbeitet :wink:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Code: Alles auswählen

Procedure AttachProcess(Instanz)
  Beep_(3000, 1000)
  MessageRequester("Info", "DLL aktiviert.", #PB_MessageRequester_Ok)
EndProcedure
unverändert - nichts !

EDIT @AND51 : a14xerus hat es doch nur gut gemeint. man wächst mit seinen aufgaben !
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Ich habe noch nie DLLs benutz und hier eben ein Beispiel gemacht, was auch funktioniert:

Code: Alles auswählen

;PROG
MessageRequester("START","START PROGRAMM")
If OpenLibrary(0, "DLL.dll") 
  Delay(5000)
  CloseLibrary(0) 
EndIf
MessageRequester("EXIT","EXIT PROGRAMM")

Code: Alles auswählen

;DLL

ProcedureDLL AttachProcess(Instanz)
  MessageRequester("START","START DLL")
EndProcedure

ProcedureDLL DetachProcess(Instance)
  MessageRequester("EXIT","EXIT DLL")
EndProcedure
//EDIT:
Wie ich schon geschrieben habe:
a14xerus hat geschrieben:dann sollte man es wenigstens mit ProcedureDLL aufrufen. .würd ich mal sagen
Wichtig dabei: ProcedureDLL
Zuletzt geändert von a14xerus am 24.05.2007 20:58, insgesamt 2-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Keine Problem, beept wie blöd :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten