Pravda, musel jsem nastavit celou cestu k souboru tzn. chdir("C:\\Users\\Vítek\\Downloads"); Program původně zapisoval do adresáře C:\Windows\SysWOW64. Tak děkuju moc
Příspěvky odeslané z IP adresy 188.175.138.–
Zdravim,
mám jednoduchý program, který po spuštění zapíše do textového souboru "TEST" a skončí. Problém je v tom, že když nastvím automatické spuštění při startu Windows, program přestane správně fungovat.
#include <stdio.h>
int main()
{
FILE *file;
file = fopen("test.txt", "a+");
if(file == NULL)
printf("FALSE\n");
else
printf("TRUE\n");
fprintf(file, "TEST\n");
fclose(file);
system("pause");
return 0;
}
Výstup z programu bude:
TRUE
Pokračujte...
Ovšem textový soubor neexistuje.
Výsledek je stejný jak pro startup z registrů (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run) tak i pro spuštění ze složky "Po spuštění" (C:\Users\Vítek\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup). Ještě doplním, že se přihlašuji k administrátorskému účtu. Budu rád za každou radu
Tak nakonec mi pomohl Radek Chalupa, kterému bych chtěl tímto poděkovat za ochotu. Problém byl v tom, že do proměnné dwInfoFlags se musí přiřadit kromě NIIF_USER také NIIF_LARGE_ICON.
A tady je správný zdrojový kód, kdyby to někoho zajímalo.
NOTIFYICONDATA nid;
ZeroMemory(&nid, sizeof(nid));
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = g_hwnd;
nid.hIcon = (HICON) GetClassLongPtr(g_hwnd, GCLP_HICONSM);
strcpy_s(nid.szTip, "Notifykační Ikona"); //Plovoucí text
nid.uID = 1;
nid.uCallbackMessage = WM_NOTIFY_ICON;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_INFO;
nid.dwInfoFlags = NIIF_LARGE_ICON |NIIF_USER;
nid.hBalloonIcon = (HICON) LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(IDI_DROPBOX), IMAGE_ICON, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), NULL); //Ikona baloon tool-tipu
nid.dwState = 0;
nid.uVersion = NOTIFYICON_VERSION_4;
nid.uTimeout = 10000; //Doba zobrazení (ignorováno ve Win Vista a vyšší)
strcpy_s(nid.szInfo, TEXT("Pozor! Vaše myš je hladová.\nVložte sýr do mechaniky.")); //Text do 255 znaků
strcpy_s(nid.szInfoTitle, "Balónový tool-tip"); //Nadpis zprávy
Shell_NotifyIcon(NIM_ADD, &nid))
1) Stáhni si .manifest soubor http://www.uloz.to/xeGS68k/test-exe-manifest
2) Přejmenuj ho podle názvu tvojí aplikace (pro winapi.exe = winapi.exe.manifest)
3) Zkopíruj ho např. do složky nazevApp\nazevApp\Debug
4) Naimportuj existující manifest do Source Files (v Slolution Explorer)
5) Pokud to stále nefunguje, otevři manifest ve VS a lehce ho uprav (smaž mezeru) a znovu zkompiluj
Možná existuje i jednodušší řešení, ale tohle je jediný, který znam.
Dobrý den, mám problém se zobrazení vlastní ikony v tzv. balónové zprávě. Když vytvořim například takovouhle zprávu, tak potřebuju změnit to modrý íčko.
Na msdn (http://msdn.microsoft.com/en-us/library/windows/desktop/bb773352%28v=vs.85%29.aspx) jsem zjistil, že u členu struktury NOTIFYICONDATA.dwInfoFlags musim zvolit NIIF_USER a potom do členu hBalloonIcon přiřadit handle ikony. Jenomže když to udělam, funkce Shell_NotifyIcon vrátí FALSE. Doufám, že jsem se správně vyjádřil
To 97 je hodnota znaku 'a' v ASCII tabulce viz. http://www.asciitable.com/ Jinak opačně je to:
int znak = getch();
printf("%i", znak);
Koukni na článek tady na programujte.com: http://programujte.com/clanek/2009092900-ftp-pristup-v-c/
Jednodužší by bylo, kdyby sis vytvořil ve zdrojích novej dialog a ten potom otevřel. Takže něco jako
case IDB_SETTINGS:
dlgResult = DialogBox(NULL, MAKEINTRESOURCE(IDD_DIALOG2), hwndDlg, (DLGPROC)DialogProc);
a uděláš si další proceduru pro tenhle dialog.