Seite 1 von 1

OpenLibrary-Fehlermeldung unterdrücken

Verfasst: 25.08.2005 14:16
von Kiffi
Hallo,

ich untersuche alle DLLs, die in einem Ordner liegen, indem ich versuche sie
mit OpenLibrary() zu öffnen. Hier liegen auch ein paar Dummy-Dateien, die
keine richtigen DLLs sind (sind nur 0-Byte-Blinddateien mit der Extension
DLL). Versuche ich, diese mit OpenLibrary zu öffnen, so ploppt ein
Messagerequester auf, in dem steht:
Windows oder PB hat geschrieben:"Die Anwendung oder DLL "MeineDummy.DLL" ist keine gültige Windows-Datei. Überprüfen Sie dies mit der Installationsdiskette"
Wie kann ich diese Meldung unterdrücken? Ich hab's schon mit OnError*
versucht, aber das wird hartnäckig ignoriert.

Danke im voraus & Grüße ... Kiffi

Verfasst: 25.08.2005 14:19
von Spirit
Du könntest die DLL vorher mit ReadFile() öffnen und mit Lof() die Größe überprüfen. Ist die Datei leer, wird sie einfach übersprungen.

Verfasst: 25.08.2005 14:23
von Kiffi
Spirit hat geschrieben:Du könntest die DLL vorher mit ReadFile() öffnen und mit Lof() die Größe überprüfen. Ist die Datei leer, wird sie einfach übersprungen.
danke für den schnellen Tipp, aber es geht offenbar nicht um die Grösse,
sondern um den Inhalt der DLL. Ich habe gerade die Dummy-DLL auf 10 K
aufgeblasen. Die Fehlermeldung kommt noch immer.

Grüße ... Kiffi

Verfasst: 25.08.2005 14:27
von Tafkadasom2k5
Ich werfe mal ganz einfach das Wort "Pures Remote-API Library" in den Raum und dann verpiss ich mich schnell wieder, weil ich ned weis wie sie funktioniert und/oder angesteuert wird...aber es müsste vll gehen damit-weil man damit ja auch Messagrequester "Manipulieren" kann-also vielleicht auch unterdrücken?

Greetz
Tafkadasom2k5

Verfasst: 25.08.2005 14:28
von Spirit
Ich glaube jede DLL hat soetwas wie einen Header. Den könnte man überprüfen. Was ich jetzt auf den ersten Blick gesehen habe, ist, dass jede DLL (und auch EXE) mit 'MZ' losgeht.

Verfasst: 25.08.2005 14:43
von Kiffi
@Tafkadasom2k5:

> Ich werfe mal ganz einfach das Wort "Pures Remote-API Library" in den
> Raum

naja, bevor ich sooo tief in die Trickkiste greife, wollte ich erst mal
alternative Möglichkeiten kennenlernen. Trotzdem Danke für Deinen Tipp!

@Spirit:
> Was ich jetzt auf den ersten Blick gesehen habe, ist, dass jede DLL (und
> auch EXE) mit 'MZ' losgeht.

gute Idee! Jetzt habe ich mal eine Exe in den Ordner geschmissen und in DLL
umbenannt. Dann kommt keine Fehlermeldung. Alle anderen Dateien kann
ich mit der MZ-Prüfung abfischen.

Grüße ... Kiffi

Verfasst: 26.08.2005 00:41
von Lupo
@kiffi

Ich hatte mal ähnlichen Ärger mit solchen ungewünschten windoof-
Fenstern.

Versuch mal das wenn du 2K oder XP hast:

Code: Alles auswählen

SetErrorMode_(#SEM_FAILCRITICALERRORS | #SEM_NOGPFAULTERRORBOX | #SEM_NOOPENFILEERRORBOX)
Jetzt sollte das Fenster weg sein, du kannst dann mit GetLastError_()
nachsehen, ob das Öffnen der DLL ok war.

Achtung: das SetErrorMode_(x.....) bleibt solange aufrecht bis man es
wieder zurücksetzt (mal die passenden Parameter ansehen)

Noch was Praktisches: Dieses SetErrorMode_() verhindert auch das
Fenster von wegen der unerlaubten Speicherverletzung durch Read etc.

Das Programm vertschüsst sich dann bei einem solchen Fehler ohne
Kommentar .... ist ganz praktisch wenn man es bei einem Anwender laufen hat, dann fallen
kleine Programmierfehler nicht so auf :mrgreen:

Danke

LUPO