%windir% in C++ [erledigt] BIG THX 2 VOLKARD
-
milan1612 schrieb:
unskilled schrieb:
jz erklär mir mal, wieso du nicht den stack nimmst!?
bb
Ist schnurz-piep-egal imho, das ist ja keine Funktion die man oft braucht, einmal
aufrufen und dann zwischenspeichern...
dafür die chance, dass sie bad_alloc wirft... es macht einfach keinen Sinn... leserlicher wirds dadurch auch nicht...
-
Weils noch niemand getan hat:
Bitte ließ dir ein gutes Buch zum Thema C++ durch, bevor du dich mit der WinAPI beschäftigst. Es schont dir und vor allem uns Nerven, wenn du zumindest grob weißt, was du tust.
-
wenn ich versuche des so zu schreiben (für nen autostarteintrag)
BYTE pfad[] = getWindowsPath() + "\\SYS\\Porgramm.exe";dann sagt mir devc++ compiler
28 C:\Users\Florian\Desktop\Neuer Ordner\start.cpp initializer fails to determine size of `pfad'
28 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp invalid initializerkann mir da noch jemand helfen, dann geb ich au a rua

-
otze schrieb:
Bitte ließ dir ein gutes Buch zum Thema C++ durch, bevor du dich mit der WinAPI beschäftigst. Es schont dir und vor allem uns Nerven, wenn du zumindest grob weißt, was du tust.
-
otze schrieb:
otze schrieb:
Bitte ließ dir ein gutes Buch zum Thema C++ durch, bevor du dich mit der WinAPI beschäftigst. Es schont dir und vor allem uns Nerven, wenn du zumindest grob weißt, was du tust.
bin am lesen, aber ich brauch jetzt hald diese funktion für mein projekt, also bitte hilf mir doch kurz auf die sprünge

-
ZockerFloh7 schrieb:
otze schrieb:
otze schrieb:
Bitte ließ dir ein gutes Buch zum Thema C++ durch, bevor du dich mit der WinAPI beschäftigst. Es schont dir und vor allem uns Nerven, wenn du zumindest grob weißt, was du tust.
bin am lesen, aber ich brauch jetzt hald diese funktion für mein projekt, also bitte hilf mir doch kurz auf die sprünge

Dadurch dass andere Dir den Code hinkotzen ist Dir auch nicht geholfen.. lerne es oder lass es.
-
BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe");
-
ZockerFloh7 schrieb:
camper schrieb:
Warum nicht einfach
BYTE pfad[] = "%windir%\\meinprogramm.exe";? Der Bezug zu C++ erscheint mir allerdings als zu gering, als dass er das Posten in diesem Unterforum rechtfertigen würde.
wo soll ich denn sonst sowas fragen?
Im WinAPI-Unterforum: http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html
-
C++Fr34k schrieb:
ZockerFloh7 schrieb:
otze schrieb:
otze schrieb:
Bitte ließ dir ein gutes Buch zum Thema C++ durch, bevor du dich mit der WinAPI beschäftigst. Es schont dir und vor allem uns Nerven, wenn du zumindest grob weißt, was du tust.
bin am lesen, aber ich brauch jetzt hald diese funktion für mein projekt, also bitte hilf mir doch kurz auf die sprünge

Dadurch dass andere Dir den Code hinkotzen ist Dir auch nicht geholfen.. lerne es oder lass es.
hast ja recht aber bis ich mit lernen bei dem kapitel bin dauerts noch nen virtel bis halbes jahr, wenn nich länger...
-
Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
volkard schrieb:
BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe");danke, aber irgendwas hab ich immernoch falsch:
std::string getWindowsPath() { char* buff = new char[MAX_PATH]; std::string ret_val; if (GetWindowsDirectory(buff, MAX_PATH)) { ret_val = buff; } delete[] buff; return ret_val; } int main() { HWND hwnd = FindWindow("ConsoleWindowClass",NULL); ShowWindow(hwnd,SW_SHOW); // console verstecken BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe"); HKEY hkey; RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0); RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad, sizeof(pfad)); RegCloseKey(hkey); }bekomm beim compilieren das:
28 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp no matching function for call to `strcpy(BYTE[4711], std::string)'
note C:\Dev-Cpp\include\string.h:45 candidates are: char* strcpy(char*, const char*)
29 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp invalid conversion from `BYTE*' to `char*'
29 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp initializing argument 1 of `char* strcat(char*, const char*)'
-
statt
BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe");besser
string pfad=getWindowsPath()+"\\SYS\\Porgramm.exe";und bei der verwendung wenn pfad nicht klappt pfad.c_str() nehmen.
-
volkard schrieb:
statt
BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe");besser
string pfad=getWindowsPath()+"\\SYS\\Porgramm.exe";und bei der verwendung wenn pfad nicht klappt pfad.c_str() nehmen.
funzt fast, bekomm beim compilieren noch einen error und zwar den:
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp cannot convert `std::string' to `const BYTE*' for argument `5' to `LONG RegSetValueExA(HKEY__, const CHAR, DWORD, DWORD, const BYTE*, DWORD)'
findet er im qellencode hier:
RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad, sizeof(pfad));
-
Vielleicht
RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad.c_str(), pfad.size());
-
volkard schrieb:
Vielleicht
RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad.c_str(), pfad.size());nee, spuck der compiler den error aus:
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp invalid conversion from `const char*' to `const BYTE*'
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp initializing argument 5 of `LONG RegSetValueExA(HKEY__, const CHAR, DWORD, DWORD, const BYTE*, DWORD)'
-
Mit Gewalt vielleicht.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE*>(pfad.c_str()), pfad.size());
-
volkard schrieb:
Mit Gewalt vielleicht.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE*>(pfad.c_str()), pfad.size());anscheinend gewalt auch keine lösung xD
error:
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp reinterpret_cast from type `const char*' to type `BYTE*' casts away constness
vielleicht erst convertieren?
http://dotnet-snippets.de/dns/string-in-byte-array-und-zurueck-wandeln-SID67.aspx
-
Vielleicht const vergessen.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE const*>(pfad.c_str()), pfad.size());
-
volkard schrieb:
Vielleicht const vergessen.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE const*>(pfad.c_str()), pfad.size());jaaaaaaaaaaaabadabadoooooooooooooooooo
daaaaaaaaanke

du kannst dir garnicht vorstellen wie ich mich grad freue
big thx volkard
-
hätt noch ne frage, wenn jemand zeit hat

wie kann ich nen string in ne pfadangabe mit "system" einbauen
habs so probiertsystem(getWindowsPath()+"\\SYS\\del.exe");dabei kommt dann das raus:
cannot convert `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to `const char*' for argument `1' to `int system(const char*)'
jemand ne idee wie man den string zu char convertieren kann?