AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Neustart der Applikation aus Stabilitätsgründen...
Thema durchsuchen
Ansicht
Themen-Optionen

Neustart der Applikation aus Stabilitätsgründen...

Ein Thema von BigAl · begonnen am 28. Aug 2022 · letzter Beitrag vom 29. Aug 2022
Antwort Antwort
Seite 3 von 3     123   
venice2
(Gast)

n/a Beiträge
 
#21

AW: Neustart der Applikation aus Stabilitätsgründen...

  Alt 29. Aug 2022, 16:12
Zitat:
Du kannst einen kleinen Nagel auch mit einer Zange ins Holz hauen
Klar doch.
Nehme lieber einen Fingerhut damit geht's auch.

Nu dann ist die Unit von Uwe auch falsch bis auf den zusätzlichen Parameter ist es der gleiche Aufruf.
Delphi-Quellcode:
  if AutoRestart then begin
    ShellExecute(0, 'open', PChar(ParamStr(0)), AutoRestartCmdLine, nil, SW_SHOW);
PWideChar bleibt PWideChar ob ich nun PChar übergebe und der passende Pendant vom Compiler zu gewiesen wird bleibt sich gleich.
Also verwende ich die passende Konvertierung direkt.

Müßig jetzt darüber zu streiten.

Geändert von venice2 (29. Aug 2022 um 16:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.051 Beiträge
 
Delphi 12 Athens
 
#22

AW: Neustart der Applikation aus Stabilitätsgründen...

  Alt 29. Aug 2022, 16:28
Also verwende ich die passende Konvertierung direkt.
Sie sind nur zufällig passend.

ShellExecuteW und PWideChar mit einem UnicodeString oder WideString
oder ShellExecute und PChar mit einem String.

Früher dachten auch viele ShellExecute mit PAnsiChar funktioniert ja, da PChar ein PAnsiChar war.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#23

AW: Neustart der Applikation aus Stabilitätsgründen...

  Alt 29. Aug 2022, 16:43
Zitat:
Sie sind nur zufällig passend.
Ach.. Sicher doch. Zufällig!

Unit ShellAPI

Delphi-Quellcode:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
  Directory: PWideChar; ShowCmd: Integer): HINST; stdcall;

function ShellExecute; external shell32 name 'ShellExecuteW';

Geändert von venice2 (29. Aug 2022 um 16:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.051 Beiträge
 
Delphi 12 Athens
 
#24

AW: Neustart der Applikation aus Stabilitätsgründen...

  Alt 29. Aug 2022, 17:42
Niemand hat behauptet, dass Delphi frei von Bugs sei.

Delphi 7
Delphi-Quellcode:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
  Directory: PAnsiChar; ShowCmd: Integer): HINST; stdcall;

function ShellExecute; external shell32 name 'ShellExecuteA';
Lazarus/FreePascal
{ascfun.inc} function ShellExecute(_para1:HWND; _para2:pchar; _para3:pchar;_para4:pchar; _para5:pchar;_para6:longint):HINST; external 'shell32name 'ShellExecuteA';
sowie
{unifun.inc} function ShellExecute(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR;_para6:longint):HINST; external 'shell32name 'ShellExecuteW';

DevExpress (es geht auch einfacher, bzw. delphi-typischer, inkl. automatischer String-Konvertierung)
function dxShellExecute(AHandle: HWND; const AFileName: string; AShowCmd: Integer = SW_SHOWNORMAL): Boolean; overload;



Ansonsten werden natürlich für compiler-abhängige "Alias" auch die compiler-abhängigen Typen benutzt, was ja eigentlich klar sein sollte.
Code:
SHSTDAPI_(HINSTANCE) ShellExecuteA(__in_opt HWND hwnd, __in_opt LPCSTR lpOperation, __in LPCSTR lpFile, __in_opt LPCSTR lpParameters,
    __in_opt LPCSTR lpDirectory, __in INT nShowCmd);
SHSTDAPI_(HINSTANCE) ShellExecuteW(__in_opt HWND hwnd, __in_opt LPCWSTR lpOperation, __in LPCWSTR lpFile, __in_opt LPCWSTR lpParameters,
    __in_opt LPCWSTR lpDirectory, __in INT nShowCmd);
#ifdef UNICODE
#define ShellExecute ShellExecuteW
#else
#define ShellExecute ShellExecuteA
#endif // !UNICODE
Im Prinzip ist es ein Übersetzungsfehler ... da Pascal/Delphi leider keine Makros oder Funktions-Aliase kennt, hätte hier der Header besser anders übersetzt werden sollen.
Da Delphi selber aber keine Umschaltung zwischen ANSI und Unicode kann, gibt es hier nur auf der Entwicklerseite eventuelle Problemchen.

Allerdings hat es beim anderen ShellExecuteEx hier mal richtig funktioniert.
Delphi-Quellcode:
function ShellExecuteEx(lpExecInfo: PShellExecuteInfo):BOOL; stdcall;
function ShellExecuteExA(lpExecInfo: PShellExecuteInfoA):BOOL; stdcall;
function ShellExecuteExW(lpExecInfo: PShellExecuteInfoW):BOOL; stdcall;


Anders sieht es z.B. beim IShellDispatch2.ShellExecute aus, denn Dieses ist explizit ausschließlich als Unicode deklariert.
Delphi-Quellcode:
    [SID_IShellDispatch2]
    function ShellExecute(&File: WideString; vArgs, vDir, vOperation,
      vShow: OleVariant): HRESULT; stdcall;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Aug 2022 um 17:51 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#25

AW: Neustart der Applikation aus Stabilitätsgründen...

  Alt 29. Aug 2022, 17:58
Zitat:
Niemand hat behauptet, dass Delphi frei von Bugs sei.
Dann solltest du das nicht grundsätzlich als ein von mir generierten Fehler abtun
sondern dich erst einmal auf die Gegebenheiten konzentrieren.

Ich übergebe die Definitionen die seitens meines verwendeten Delphi vorgegeben sind.
Ob diese letztendlich falsch sind oder nicht mag dahin gestellt sein.
Darum geht es doch letztendlich.
Zudem denke ich auch nicht das D2010 noch in irgendeiner weise Aktualisierungen bekommen wird.

Somit dürften alle Unklarheiten beseitigt sein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz