| Autor |
Beitrag |
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 21.04.06 20:47
Endlich ist es soweit.
Seit Jahren ist WinExec von MS als obsolet beschrieben. Jetzt funktioniert es tatsächlich nicht mehr.
Ich habe kürzlich einen Rechner installiert mit aktuellen XP-Pro.
Dann wollte ich ein altes Programm von mir starten und bekam ein allgemeine Schutzverletzung. Da das Programm nichts anderes macht, als ein anderes Programm zu starten, war ziemlich schnell klar, woran es lag. Das Programm benutzte immer noch WinExec.
Ich habe schnell auf ShellExecute umgestellt und schon war alles klar.
Also, wer noch alte Programme mit WinExec hat: Bei aktuellem XP-Pro laufen die nicht mehr!
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 21.04.06 23:02
Also bei mir funktioniert WinExec...  Hab auch XP Pro (SP2)...
AXMD
|
|
Ydobon
      
Beiträge: 42
|
Verfasst: Fr 21.04.06 23:10
Und MSDN gibt als Voraussetzung sogar noch Vista an. Der Fehler dürfte also woanders liegen, zumal nicht einmal MS es fertig bringen würde nach dem Wegfall einer Funktion Schutzverletzungen zu produzieren.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 21.04.06 23:21
Eine fehlendende, statisch gelinkte API Funktion würde schon beim Kompilieren die Fehlermeldung "Prozedureinstrungspunkt in DLL nicht gefunden" auslösen. Und WinExec wird bestimmt statisch gelinkt. Es wird eher daranliegen, dass WinExec für 16-Bit Progarmme gedacht ist und etwas intern macht, womit das aufrufende Programm oder aufzurufende Programm nicht klar kommt.
|
|
Ydobon
      
Beiträge: 42
|
Verfasst: Fr 21.04.06 23:24
Dann würde ich doch als OS-Entwickler wenigstens eine Art Dummy hinterlassen, um eben so etwas zu verhindern.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 21.04.06 23:32
Und was soll der Dummy machen? Nichts? Was hätte der Entwickler bzw. der Benutzer davon? Es würde nur große Rätsel aufgeben, warum nichts passiert. Eine meldung ausgeben? Das passiert ja schon, so wohl beim Entwickeln, als auch später beim Benutzer, wenn es auf einem Betriebssystem läuft, auf dem es diese Funktion nicht gibt. Siehe dazu auch diese Funktion, um dem OS vorzugaukeln, dass das Programm als Bildschirmschoner läuft.
|
|
Ydobon
      
Beiträge: 42
|
Verfasst: Fr 21.04.06 23:41
Stimmt auch wieder. Nur so etwas absichtlich in einem Programm zu provozieren, würde mich schon etwas schütteln, dass muss doch sanfter gehen.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 21.04.06 23:42
Gerade gefunden: blogs.msdn.com/oldne...05/10/26/485133.aspx
Gleiches Problem nur mit Icons und Animationen in System DLLs.
|
|
jasocul 
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Sa 22.04.06 06:31
Auf allen Rechnern die schon länger XP-Pro haben (immer aktuelle Updates und Patches enthalten), funbktionert es auch. Nur bei wirklich neu installierten nicht mehr.
Da es sich im Firmen-PCs handelt, ist die Konfiguration ansonsten natürlich die selbe. Außer dem OS gibts kein Unterschied.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 22.04.06 12:54
Wie gesagt, es muss an etwas anderem liegen, da eine fehlende API Funktion obige Fehlermeldung auslöst.
|
|
jasocul 
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Sa 22.04.06 13:25
Beim Compilieren bekomme ich keine Fehlermeldung. Allerdings läuft es bei dem PC, auf dem compiliert wird auch. Wenn natürlich mit den neueren Builds von XP-Pro die API-Funktion fehlt, kommt der Fehler logischerweise erst zur Laufzeit.
Womit meine Behauptung, dass WinExec mit aktuellem XP-Pro nicht mehr funktioniert, trotzdem stimmen würde.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 22.04.06 13:29
jasocul hat folgendes geschrieben: | | Womit meine Behauptung, dass WinExec mit aktuellem XP-Pro nicht mehr funktioniert, trotzdem stimmen würde. |
Nein, wie Ydobon richtig schreibt:
| Zitat: | | zumal nicht einmal MS es fertig bringen würde nach dem Wegfall einer Funktion Schutzverletzungen zu produzieren. |
Die Fehlermeldung wäre eine andere (Prozedureinsprungpunkt WinExec in bla.dll nicht gefunden)
AXMD
|
|
jasocul 
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Sa 22.04.06 13:37
Dann frage ich mich aber ernsthaft, woran das liegen kann. In dem Programm habe ich wirklich nur WinExec durch ShellExecute ausgetauscht (und die ShellAPI-Unit eingebunden). Danach lief alles fehlerfrei.
Oder muss ich langsam an meinem Verstand zweifeln? 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 22.04.06 13:37
Kompilier das www.delphi-forum.de/...t=prozess+verstecken mal auf eine Win9x Rechner, führe es unter Windows XP aus und guck, was passiert.
|
|
jasocul 
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Sa 22.04.06 13:42
Ich habe seit ein paar Jahren keinen Win9x-Rechner mehr. Wird also schwierig. Ich weiß aber, worauf du hinaus willst. Die eingebundene DLL-Funktion ist ebenfalls von einem XP-Pro-Rechner. Allerdings ein ältere Version mit allen Updates.
Wenn ich nächste Woche die Zeit dazu finde, werde ich eine Test-Applikation basteln. Vielleicht lässt sich dann die Ursache ermitteln.
|
|