AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi GetStartupInfoW(StartupInfoW) - Parameter
Thema durchsuchen
Ansicht
Themen-Optionen

GetStartupInfoW(StartupInfoW) - Parameter

Ein Thema von Garfield · begonnen am 23. Jun 2007 · letzter Beitrag vom 24. Jun 2007
 
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#5

Re: GetStartupInfoW(StartupInfoW) - Parameter

  Alt 24. Jun 2007, 12:10
Zitat von Sunlight7:
Das is in meinen D5 auch so drin.
Also einmal falsch übersetzt, den Fehler nie bemerkt und immer weiter mitgeschleppt.

Zitat von Luckie:
Das ist die Sauerei von Borland. Die Struktur ist nur als Ansi-Versin deklariert, aber siehaben trotzdem noch die zugehörige WideString Funktion deklariert, die dann aber die Ansi-Struktur benutzt. ...
Ganz so ist das nicht. Die StartupInfo ist schon als Ansi und Wide-Deklaration vorhanden:
Delphi-Quellcode:
type
  PStartupInfoA = ^TStartupInfoA;
  PStartupInfoW = ^TStartupInfoW;
  PStartupInfo = PStartupInfoA;
  _STARTUPINFOA = record
    cb: DWORD;
    lpReserved: PAnsiChar;
    lpDesktop: PAnsiChar;
    lpTitle: PAnsiChar;
    dwX: DWORD;
    dwY: DWORD;
    dwXSize: DWORD;
    dwYSize: DWORD;
    dwXCountChars: DWORD;
    dwYCountChars: DWORD;
    dwFillAttribute: DWORD;
    dwFlags: DWORD;
    wShowWindow: Word;
    cbReserved2: Word;
    lpReserved2: PByte;
    hStdInput: THandle;
    hStdOutput: THandle;
    hStdError: THandle;
  end;
  _STARTUPINFOW = record
    cb: DWORD;
    lpReserved: PWideChar;
    lpDesktop: PWideChar;
    lpTitle: PWideChar;
    dwX: DWORD;
    dwY: DWORD;
    dwXSize: DWORD;
    dwYSize: DWORD;
    dwXCountChars: DWORD;
    dwYCountChars: DWORD;
    dwFillAttribute: DWORD;
    dwFlags: DWORD;
    wShowWindow: Word;
    cbReserved2: Word;
    lpReserved2: PByte;
    hStdInput: THandle;
    hStdOutput: THandle;
    hStdError: THandle;
  end;
  _STARTUPINFO = _STARTUPINFOA;
  TStartupInfoA = _STARTUPINFOA;
  TStartupInfoW = _STARTUPINFOW;
  TStartupInfo = TStartupInfoA;
  {$EXTERNALSYM STARTUPINFOA}
  STARTUPINFOA = _STARTUPINFOA;
  {$EXTERNALSYM STARTUPINFOW}
  STARTUPINFOW = _STARTUPINFOW;
  {$EXTERNALSYM STARTUPINFO}
  STARTUPINFO = STARTUPINFOA;
Der Fehler liegt in den Zeilen:

Delphi-Quellcode:
procedure GetStartupInfoA(var lpStartupInfo: TStartupInfo); stdcall;
procedure GetStartupInfoW(var lpStartupInfo: TStartupInfo); stdcall;
Denn wegen TStartupInfo = TStartupInfoA wird in beiden Fällen Ansi verwendet. Ich habe mein Projekt um diese Unit erweitert:

Delphi-Quellcode:
unit myWindows;

interface

uses
  Windows;

procedure myGetStartupInfo(var lpStartupInfo: TStartupInfo); stdcall;
{$EXTERNALSYM myGetStartupInfo}
procedure myGetStartupInfoA(var lpStartupInfo: TStartupInfoA); stdcall;
{$EXTERNALSYM myGetStartupInfoA}
procedure myGetStartupInfoW(var lpStartupInfo: TStartupInfoW); stdcall;
{$EXTERNALSYM myGetStartupInfoW}

const
{$IFDEF MSWINDOWS}
  kernel32 = 'kernel32.dll';
{$ENDIF}

implementation

procedure myGetStartupInfo; external kernel32 name 'GetStartupInfoA';
procedure myGetStartupInfoA; external kernel32 name 'GetStartupInfoA';
procedure myGetStartupInfoW; external kernel32 name 'GetStartupInfoW';

end.
Damit läuft der Compiler erst einmal durch. Ob es richtig funktioniert muss ich noch testen lassen.

Zitat von Dezipaitor:
Aber ein Pointer ist doch ok?
Gut man muss natürlich wissen, dass der Pointer ein AnsiString oder ein WideString ist.
Die StartupInfo ist kein String sondern ein Record.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
 


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 01:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz