vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
VB6 & - 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB6 & - API - 32/64 - In der IDE gibt es einen Abbruch, in der .exe aber nicht 
Autor: ModeratorDieter (Moderator)
Datum: 24.06.21 08:01

Um welche API handelt es sich denn?

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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>
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel