[DllImport("kernel32.dll", SetLastError = false, CharSet = CharSet.Auto)]
static extern void GetStartupInfo(out STARTUPINFO lpStartupInfo);
Declare Sub GetStartupInfo Lib "kernel32.dll" (<Out> ByRef As STARTUPINFO)
On my W10x64 my vshost.exe died by caling the GetStartupInfoW method.
So i changed it to GetStartupInfoA and also changed the 'STARTUPINFO's StructureLayout-Attribute to CharSet.Ansi instead of Unicode.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct STARTUPINFO
{
public uint cb;
public string lpReserved;
public string lpDesktop;
public string lpTitle;
public uint dwX;
public uint dwY;
public uint dwXSize;
public uint dwYSize;
public uint dwXCountChars;
public uint dwYCountChars;
public uint dwFillAttribute;
public uint dwFlags;
public ushort wShowWindow;
public ushort cbReserved2;
public IntPtr lpReserved2;
public IntPtr hStdInput;
public IntPtr hStdOutput;
public IntPtr hStdError;
}
[DllImport("kernel32.dll", SetLastError = true, EntryPoint = "GetStartupInfoA")]
public static extern void GetStartupInfo(out STARTUPINFO lpStartupInfo);
GetStartupPath() returns the path of the object that started the program, be it a shortcut or an EXE file
Tested on VB.NET Framework 2.0 in XP and Win10
Private Declare Sub GetStartupInfo Lib "kernel32.dll" Alias "GetStartupInfoA" (ByRef lpStartupInfo As STARTUPINFO)
Private Structure STARTUPINFO
Public cb As UInteger
Public lpReserved As String
Public lpDesktop As String
Public lpTitle As String
Public dwX As UInteger
Public dwY As UInteger
Public dwXSize As UInteger
Public dwYSize As UInteger
Public dwXCountChars As UInteger
Public dwYCountChars As UInteger
Public dwFillAttribute As UInteger
Public dwFlags As UInteger
Public wShowWindow As UShort
Public cbReserved2 As UShort
Public lpReserved2 As IntPtr
Public hStdInput As IntPtr
Public hStdOutput As IntPtr
Public hStdError As IntPtr
End Structure
Private Const STARTF_TITLESHORTCUT = &H800
Public Function GetStartupPath() As String
Dim si As New STARTUPINFO
si.dwFlags = si.dwFlags And STARTF_TITLESHORTCUT
Call GetStartupInfo(si)
Return si.lpTitle
End Function
Do you know one? Please contribute it!