questo è il mio codice:C# Process.MainWindowHandle restituisce sempre IntPtr Zero
using (Process game = Process.Start(new ProcessStartInfo() {
FileName="DatabaseCheck.exe",
RedirectStandardOutput = true,
CreateNoWindow = true,
UseShellExecute = false }))
{
lblLoad.Text = "Loading";
int Switch = 0;
while (game.MainWindowHandle == IntPtr.Zero)
{
Switch++;
if (Switch % 1000 == 0)
{
lblLoad.Text += ".";
if (lblLoad.Text.Contains("...."))
lblLoad.Text = "Loading.";
lblLoad.Update();
game.Refresh();
}
}
Il problema è che è sempre game.MainWindowHandle IntPtr.Zero. Devo trovare l'IntPtr del processo in esecuzione per confermare che il gioco è stato avviato dal programma di avvio, quindi ho fatto in modo che il gioco inviasse il suo IntPtr e che il launcher rispondesse se è ok. Ma per quello, devo conoscere specificamente l'IntPtr del processo di esecuzione.
Grazie in anticipo!
tenterà che quando sono a casa. Grazie – Kfirprods
Grazie, ha funzionato. – Kfirprods
Si noti che su 4.5 questo non è più necessario (anecdotal - il mio codice ha funzionato su 4.5 e fallito quando sono passato a 3.5 finché ho aggiunto '.Refresh()') – Basic