OpenLibrary-Fehlermeldung unterdrücken

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

OpenLibrary-Fehlermeldung unterdrücken

Beitrag 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
a²+b²=mc²
Benutzeravatar
Spirit
Beiträge: 174
Registriert: 13.04.2005 19:09

Beitrag 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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Spirit
Beiträge: 174
Registriert: 13.04.2005 19:09

Beitrag 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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
Lupo
Beiträge: 147
Registriert: 16.02.2005 15:15

Beitrag 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
Antworten