2009-06-19 2 views
6

Ich habe eine alte VB6-Anwendung, die ein ImageList-Steuerelement von COMCTL32.OCX ("Microsoft Windows Common Controls 5.0 (SP2)") verwendet, um Symbole für TreeViews und ListViews bereitzustellen .Die Verwendung von ImageList aus VB6-Anwendung verursacht Absturz unter Windows 7.0 64-Bit

Die App wird nicht einmal unter Windows 7.0 64 Bit gestartet. In der Minute, in der versucht wird, das Formular zu laden, auf dem die ImageList gespeichert ist, stürzt es ab (eigentlich blinkt die App und wird ohne eine Spur beendet).

Das Entfernen der ImageList aus dem Formular löst das Problem.

Irgendwelche Ideen?

+1

Keine Ahnung, außer es an Microsoft melden. Zweitens, vielleicht ein wenig eingrenzen, indem Sie einzelne Bilder arbeiten. –

Antwort

8

ich dieses Problem gelöst durch alle Instanzen COMCTL32.OCX ersetzen, die mit VB5 kam, mit MSCOMCTL.OCX, die mit VB6 kam.

Microsoft KB-Artikel 190952 verfügt über Anweisungen für das Durchführen. Es war fast nur eine globale Such- und Ersetzungsoperation.

1

Es ist möglich, dass ein Problem mit Data Execution Protection (DEP) auftritt. Testen Sie es, indem Sie DEP deaktivieren:

Starten Sie nach Eingabe der oben genannten in einer Befehlszeile neu. Denken Sie daran, es wieder einzuschalten, da es sich dabei um Windows mit heruntergelassener Hose handelt.

Bearbeiten: Der obige Befehl funktioniert unter Vista. Ich habe es unter Windows 7 nicht ausprobiert.

+0

+1 Yep klingt wie klassische DEP, definitiv die erste Anlaufstelle. – AnthonyWJones

1

Ein weniger drastischer DEP-Tweak wird in den Computer-Leistungsdialog (erweiterte Registerkarte der Systemeigenschaften) gehen und die Apps exe zur Liste der Ausnahmen auf der DEP-Registerkarte hinzufügen.

BTW, sind Sie sicher, dass dies nicht auf serverfault.com gehört. : P

2

Melden Sie einen Fehler an Microsoft. Die VB6 Runtime still supported auf 64-Bit-Windows-7 comctl32.ocx ist nicht mit Windows 7 installiert, aber es ist explicitly listed wie unter Windows unterstützt 7.

2

Ihre Lösung ist in Ordnung. Aber COMCTL32.OCX sollte auf Win64 trotzdem funktionieren (Vista oder 7).

Nur ein wenig Beratung:

Wenn MSCOMCTL.OCX verwenden Sie die XP/Vista/7 Stil und Ihre Anwendung könnte fremd sehe nicht auf das Listview in der Lage zu bewerben oder TreeView. Das Manifest hat keine Auswirkungen auf MSCOMCTL.OCX-Steuerelemente.

Eine Problemumgehung wäre die Unterklasse der MSCOMCTL.OCX-Steuerelemente, und da sie immer noch eine COMCTL32.DLL-Header enthalten, können Sie ändern, wie es malt.

(Ich hätte als Kommentar geschrieben, aber ich kann immer noch nicht)

Verwandte Themen