Yani, kısaca, benim durumumda - Steam ile fırlatma seçenekleri olan bir program başlatmam gerekiyor. Benim küçük programın başlangıcında, onu başlatmak için system() kullandım, şimdi ShellExecute()
ile başlatmak istiyorum, ama hiçbir şey yapmıyor. Herhangi bir yardım takdir edilecektir. ShellExecute çalışmıyor veya yanlış bir şey mi yapıyorum?
#define STEAM_DIRECTORY "\"D:\\Programs\\Steam\\steam.exe\""
int main()
{
....
string runsteam_arg = STEAM_DIRECTORY;
runsteam_arg = runsteam_arg + " -login " + login[num - 1] + " " + pass[num - 1];
system(runsteam_arg.c_str());
}
Düzenleme:
#include <Windows.h>
#define STEAM_DIRECTORY "D:\\Programs\\Steam\\steam.exe"
int main()
{
....
string arguments = "- login " + login[num - 1] + " " + pass[num - 1];
ShellExecute(NULL, (LPCWSTR)"open", (LPCWSTR)STEAM_DIRECTORY, (LPCWSTR)arguments.c_str(), NULL, SW_SHOWMINIMIZED);
}
Daha önce kullandım ne
"D:\Programs\Steam\steam.exe" -login xxxx xxxx
Ve bir şey daha: Eninde sonunda çalıştırmak için gerekenler , birisi CoInitializeEx()
'un ne yaptığını açıklayabilir mi? Windows API’da yeniyim.
olanlar (LPCWSTR) atmalarını sadece zaman yanlış yaptıklarını belirten gelen derleyici durdu, o yaptı yanlış yapmanı engellemem. L "açık" gibi bir Unicode literal oluşturmak için önek L. Veya ShellExecuteA() kullanın. Ve bir winapi işlevinin dönüş değerini göz ardı etmeyin. –