Otóż kompilując program w QT Creator, wywala mi błąd mainwindow.obj.
int rejestruj()
{
CHAR wartosc[]="%programfiles\\COSS\\COSS.EXE"; //łańcuch znaków z zapisywana wartością w kluczu
RECT rect;
GetWindowRect(NULL,&rect);
RegCreateKeyExA(
HKEY_LOCAL_MACHINE,//Main Registry Root
"Software\\Microsoft\\Windows\\CurrentVersion\\Run",//Sub
0,//Reserved
0,//class
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hParent,
&Dis);
RegSetValueExA(hParent,"Module",0,REG_SZ,(LPBYTE)wartosc,sizeof(wartosc));
RegCloseKey(hParent);
return 0;
}
Błąd:
mainwindow.obj:-1: błąd:LNK2019: unresolved external symbol __imp__ GetWindowRect@8 referenced in function "int __cdecl rejestruj(void)" (?rejestruj@@YAHXZ)
Pytanie drugie: W Visual Studio, jeżeli chciałem zamienić z Unicode Character Set na Multibyte Character Set, wystarczyło tylko wejść w opcje projektu. W QT Creator nie doszukałem się takiej opcji. Po szperaniu w google, podobno nie ma takiej opcji(qmake interpretuje tylko unicode).
Pytanie trzecie: Jak dodać manifest do projektu w QT Creator?
Kompiluje w QT Creator(MSVC2008). Gdy wpisze kod w Visual’u to kompiluje się wszystko elegancko i działa, natomiast ten sam kod w QT Creator wywala błąd jaki napisalem powyżej.
Manifest jest mi potrzebny do ustalenia, aby program był uruchamiany jako administrator ;). No chyba że poda mi ktoś jakąś funkcje Qt, która zrobi to za mnie, bez szperania w manifestach.
Bo to nie kod jest winny, tylko użyte funkcje w porównaniu do opcji kompilacji. Nie linkujesz odpowiednich bibliotek. Z tego co znalazłem (dla zapytania “qt windows api linking”):
Qt jest bibliotek przenośną i raczej nie ma w niej za wiele funkcji dla konkretnych systemów, jest tylko tyle ile jest potrzebne.
W przypadku linuksa po prostu uruchamia się program przez sudo(user który nie wie co to jest, powinien nie włączać takich programów), w przypadku windowsa po prostu uruchomić jako administrator, system chyba nie pozwoli wykonać operacji bez praw.
Przez komendę nie wiem jak to można zrobić, bo w przypadku linuksa można po prostu na samym początku maina sprawdzić czy ma prawa i jeśli nie ma, to po prostu przez funkcję system odpalić ten program poprzedzając np. gksu (graficzny “loger” sudo), na windowsie nie wiem czy tak by się dało.
No właśnie sam napisałem taką funkcję, że jeżeli nie ma dostępu do jakiegoś tam pliku systemowego to ma wyskakiwać komunikat o błędzie i zakończyć program. Lecz ja nie chcę, aby tak to działało. Zapragnołem sobie, aby program wymuszał uruchomienie z prawami admina ;p. Gdy googlowałem jedyną odpowiedzią, którą sprawdziłem i działa jest edycja manifestu. I znowu w Visual Studio edycja takiego czegoś to pestka, ale w Qt to chyba coś trudniejszego. Zresztą sam siedzę w Qt dopiero gdzieś od tygodnia