| |
VB & Windows APIVB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: Ralf26 | Datum: 14.02.20 17:55 |
| Guten Abend!
In einem VB6 Programm sind diverse API's in Benutzung. Die IDE dazu liegt auf einem W10-System. Bis genau 4. Februar 2020 war das alles kein Problem, seit dem 5. Februar 2020 kann die IDE zwar genutzt werden, aber nicht mehr, um das Programm auszuführen (F5). Dann wird die IDE ohne jede Nachricht geschlossen. Wenn aus dem Code eine .exe erstellt wird, dann läuft diese auf der exakt identischen Maschine problemlos.
Dann haben wir das Ganze auf eine alte XP-Umgebung gepackt - wunderbar, funktioniert alles wie gewünscht.
Also taucht der Verdacht auf, dass das etwas mit 32/64-Bit zu tun hat. Und nach einigem probieren war dann klar, dass die Anwendung an einer API aussteigt. Soweit so schlecht - denn bis zum genannten Datum hat die Anwendung ja in der IDE einwandfrei funktioniert.
Und jetzt die Frage, ob jemand eine Idee dazu hat, was das sein kann?!?
Besten Dank vorab!
Ralf | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: sv00010 | Datum: 23.06.21 19:29 |
| Eventuell wurde an den Windows API-Structures etwas geändert und neue Member hinzugefügt.
Am besten die entsprechenden Windows 10 SDKs herunterladen und nachschauen, ob sich an den verwendeten Definitionen etwas geändert hat.
Dazu in den entsprechenden .h-Dateien nachschauen. | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: Ralf26 | Datum: 10.08.21 11:27 |
| Sorry - ich hatte die Antwort gesehen - aber zu viel um die Ohren.
Zunächst einmal Danke, dass sich überhaupt jemand gemeldet hat - nach einem Jahr.
Das sich die Strukturen geändert haben - ja könnte sein. Dann macht es aber keinen Sinn, dass die exe fehlerfrei läuft, während die ide den Geist aufgibt. Wenn das ein Strukturproblem ist, dann müsste das doch unabhängig von der Umgebung existieren. Oder liege ich da falsch?
Ich habe jetzt wieder Logs eingebaut. Der Aufruf der API
dblValue = API_GetPrivateProfileInt(usSection, usKeyName, 0, usFile)
führt zum Abbruch. Die ist wie folgt definiert
Private Declare Function API_GetPrivateProfileInt Lib "kernel32.dll" Alias "GetPrivateProfileIntA" _
(ByVal strSection As String, ByVal usKeyName As String, ByVal lngDefault As Long, _
ByVal strFileName As String) _
As Long
Wenn jemand eine Idee hat - gerne. Denn was mich daran stört ist, das vorher die "API_GetPrivateProfileString" einige Male ausgeführt wurde - ohne jedes Problem...
Danke
Ralf | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: -Franky- | Datum: 11.08.21 13:45 |
| Hi
Ich kann Dein Problem mit der API werder in der IDE noch als EXE nachvollziehen (Win10 20H2). Hier mein Testcode:
Option Explicit
Private Declare Function GetPrivateProfileInt Lib "kernel32" _
Alias "GetPrivateProfileIntA" ( _
ByVal strSection As String, _
ByVal strKeyName As String, _
ByVal lngDefault As Long, _
ByVal strFileName As String) As Long
Private Sub Command1_Click()
On Error GoTo PROC_ERR
Dim lngValue As Long
lngValue = GetPrivateProfileInt("Section", "MyKey", 0&, App.Path & _
"\test.ini")
Me.Caption = CStr(lngValue)
PROC_EXIT:
Exit Sub
PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"INIGetSettingInteger"
Resume PROC_EXIT
End Sub und hier der Inhalt in der INI
[Section]
MyKey=50 Ich glaube eher das Dein Problem an anderer Stelle ist. Setze mal an entsprechenden Stellen Haltepunkte und steppe den Code mit F8 durch. Prüfe ob entsprechende Werte auch stimmen (Sektion, Key, Pfad zur Ini usw). Bau eine entsprechende Fehlerbehandlungsroutine ein die Dir einen evtl. Fehler ausgibt (So ähnlich wie in meinem Code).
Mit freundlichen Grüßen
-Franky-
Beitrag wurde zuletzt am 11.08.21 um 13:48:45 editiert. | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: Ralf26 | Datum: 11.08.21 15:23 |
| Guten Tag,
das das nicht nachvollziehbar ist, das glaube ich gerne. Sonst hätte ich das Problem ja schon gelöst
Da ist eine Fehlerbehandlung drin und selbstredend habe ich das mit F8 schon schrittweise geprüft.
Es erfolgt ein Programmabbruch ohne das es irgendeine Rückmeldung gibt. Genauer: die gesamte IDE wird ohne jede Meldung geschlossen.
Grüße
RD | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: -Franky- | Datum: 11.08.21 16:04 |
| Hi
Sürzt die IDE auch mit meinem Testcode und Test.ini ab? Ansonsten fällt mir nur der Blick in das Ereignissprotokol ein. Da sollte stehen warum die IDE gecrasht ist.
Mit freundlichen Grüßen
-Franky-
Beitrag wurde zuletzt am 11.08.21 um 16:08:25 editiert. | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: Ralf26 | Datum: 11.08.21 18:42 |
| Ereignisproptokoll: da habe ich noch nicht nachgesehen. Irgendeine Idee unter welchem Eintrag das stehen müsste?!?
Gruß
Ralf | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: -Franky- | Datum: 12.08.21 08:02 |
| Hi
Vllt könntest Du ersteinmal meinen kleinen Testcode ausprobieren. Dieser ist ja auf das wesentliche reduziert. Denn wenn wenn dieser funktioniert und die IDE nicht crasht, brauchst Du auch keinen Blick in das Ereignissprotokoll werfen.
Mit freundlichen Grüßen
-Franky- | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: Ralf26 | Datum: 12.08.21 09:20 |
| Habe ich - identisches Ergebnis... | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: -Franky- | Datum: 12.08.21 13:01 |
| Hi
Ja dann: Ereignissanzeige -> Windowsprotokolle -> Anwendung <- rechte Maustaste -> Protokoll löschen (nur leeren). Evtl. auch andere Protokolle unter Windowsprotokolle leeren. Ereignissanzeige schließen. Dann VB-IDE starten und Code ausführen. Nach dem crash der IDE wieder die Ereignissanzeige -> Windowsprotokolle -> Anwendung. Hier stehen dann einige Meldungen. Suche die Fehlermeldungen zu VB6. Da könnte man unter umständen herauslesen was da zum crash geführt hat. Alle Windows-Updates drauf? VB6 auf dem aktuellsten SP-Stand?
Da der crash anscheinend bei Dir nur bei dieser API passiert, könnnte durch irgendein Update was zerschossen worden sein, eine komische "MachMalMeinSytemSchnellerUndBesser"-Schlangenöl-Software (die keiner brauch) könnte was zerschossen haben. Die üblichen Verdächtigen halt. In dem Fall mal die Windows-Reperaturen wie "sfc /scannow" oder über "dism" eine Inplace-Reparatur usw. laufen lassen. Was da alles geht, findest im Internet. VB6 mal die Reperatur-Installation anwerfen. Gegebenfalls VB6 neu, inkl. aller ServicePackage usw, installieren.
Vllt kannst Deinen Code, oder mein Minimal-Beispiel, mal auf einem anderen Win10 PC in der VB6-IDE testen und schauen ob der da auch die IDE zum crashen bringt. Wenn die ganzen Reperaturmöglichkeiten nicht helfen, dann bleibt einem nur noch ein Komplett-Reset von Windows (Neuinstallation).
Mehr kann ich zu Deinem Problem nicht beitragen.
Mit freundlichen Grüßen
-Franky-
Beitrag wurde zuletzt am 12.08.21 um 13:04:38 editiert. | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: Ralf26 | Datum: 12.08.21 17:00 |
| Protokollname: Application
Quelle: Application Error
Datum: 12.08.2021 16:56:27
Ereignis-ID: 1000
Aufgabenkategorie100)
Ebene: Fehler
Schlüsselwörter:Klassisch
Benutzer: Nicht zutreffend
Computer: HP2018
Beschreibung:
Name der fehlerhaften Anwendung: vb6.exe, Version: 6.0.97.82, Zeitstempel: 0x403acf6c
Name des fehlerhaften Moduls: unknown, Version: 0.0.0.0, Zeitstempel: 0x00000000
Ausnahmecode: 0xc0000005
Fehleroffset: 0x0bfe50d4
ID des fehlerhaften Prozesses: 0x4bd4
Startzeit der fehlerhaften Anwendung: 0x01d78f8a2ec6f89e
Pfad der fehlerhaften Anwendung: C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe
Pfad des fehlerhaften Moduls: unknown
Berichtskennung: e2e9fc66-7173-4ddb-8e60-e8ea5197db31
Vollständiger Name des fehlerhaften Pakets:
Anwendungs-ID, die relativ zum fehlerhaften Paket ist:
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>100</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-08-12T14:56:27.5721861Z" />
<EventRecordID>162406</EventRecordID>
<Correlation />
<Execution ProcessID="0" ThreadID="0" />
<Channel>Application</Channel>
<Computer>HP2018</Computer>
<Security />
</System>
<EventData>
<Data>vb6.exe</Data>
<Data>6.0.97.82</Data>
<Data>403acf6c</Data>
<Data>unknown</Data>
<Data>0.0.0.0</Data>
<Data>00000000</Data>
<Data>c0000005</Data>
<Data>0bfe50d4</Data>
<Data>4bd4</Data>
<Data>01d78f8a2ec6f89e</Data>
<Data>C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe</Data>
<Data>unknown</Data>
<Data>e2e9fc66-7173-4ddb-8e60-e8ea5197db31</Data>
<Data>
</Data>
<Data>
</Data>
</EventData>
</Event>
Und dann
Protokollname: Application
Quelle: Application Error
Datum: 12.08.2021 16:56:37
Ereignis-ID: 1000
Aufgabenkategorie100)
Ebene: Fehler
Schlüsselwörter:Klassisch
Benutzer: Nicht zutreffend
Computer: HP2018
Beschreibung:
Name der fehlerhaften Anwendung: vb6.exe, Version: 6.0.97.82, Zeitstempel: 0x403acf6c
Name des fehlerhaften Moduls: mso20win32client.dll, Version: 0.0.0.0, Zeitstempel: 0x61035fe0
Ausnahmecode: 0xc0000005
Fehleroffset: 0x00018d72
ID des fehlerhaften Prozesses: 0x4bd4
Startzeit der fehlerhaften Anwendung: 0x01d78f8a2ec6f89e
Pfad der fehlerhaften Anwendung: C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe
Pfad des fehlerhaften Moduls: C:\Program Files (x86)\Common Files\Microsoft Shared\Office16\mso20win32client.dll
Berichtskennung: 8981bfd2-6506-413d-bee9-58ff7524db2a
Vollständiger Name des fehlerhaften Pakets:
Anwendungs-ID, die relativ zum fehlerhaften Paket ist:
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>100</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-08-12T14:56:37.5833383Z" />
<EventRecordID>162408</EventRecordID>
<Correlation />
<Execution ProcessID="0" ThreadID="0" />
<Channel>Application</Channel>
<Computer>HP2018</Computer>
<Security />
</System>
<EventData>
<Data>vb6.exe</Data>
<Data>6.0.97.82</Data>
<Data>403acf6c</Data>
<Data>mso20win32client.dll</Data>
<Data>0.0.0.0</Data>
<Data>61035fe0</Data>
<Data>c0000005</Data>
<Data>00018d72</Data>
<Data>4bd4</Data>
<Data>01d78f8a2ec6f89e</Data>
<Data>C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe</Data>
<Data>C:\Program Files (x86)\Common Files\Microsoft Shared\Office16\mso20win32client.dll</Data>
<Data>8981bfd2-6506-413d-bee9-58ff7524db2a</Data>
<Data>
</Data>
<Data>
</Data>
</EventData>
</Event> | |
Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht | | | Autor: -Franky- | Datum: 12.08.21 17:49 |
| Hi
Bei der ersten Message ist nichts zu erkennen warum die VB6 IDE abgeschmiert ist. Bei der zweiten Message gibt es ein Problem mit der mso20win32client.dll. Die gehört zu Office. Hmm, mal alle AddIns in der IDE deaktivieren und die IDE neu starten und mit einen neuen Projekt und dem Minimalcode testen. Evtl mal eine Office Reparatur anwerfen.
Mit freundlichen Grüßen
-Franky- | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|