Меняю иконку у папки.
в файле desktop.ini модифицирую строку: IconFile=ИмяНужнойМнеИконки.ico, сохраняю файл.
Какую функцию следует API вызвать, чтобы чтобы окно (допустим Explorer.exe) обновило вид папки
Здравствуйте, Filatov_AV, Вы писали:
F_A>Меняю иконку у папки.
F_A>в файле desktop.ini модифицирую строку: IconFile=ИмяНужнойМнеИконки.ico, сохраняю файл.
F_A>Какую функцию следует API вызвать, чтобы чтобы окно (допустим Explorer.exe) обновило вид папки
Как я понимаю ... это должно происходить автоматом :o)
Я бы сделал так
FindWindow .... ляля тополя ! HWND нужного окна ...
PostMessage ( нужное окно , WM_ACTIVATE , .. ) вот ...
Но это позорный метод :o)))
Здравствуйте, MOZG, Вы писали:
MOZ>Здравствуйте, Filatov_AV, Вы писали:
F_A>>Меняю иконку у папки.
F_A>>в файле desktop.ini модифицирую строку: IconFile=ИмяНужнойМнеИконки.ico, сохраняю файл.
F_A>>Какую функцию следует API вызвать, чтобы чтобы окно (допустим Explorer.exe) обновило вид папки
MOZ>Как я понимаю ... это должно происходить автоматом :o)
MOZ> Я бы сделал так
MOZ> FindWindow .... ляля тополя ! HWND нужного окна ...
MOZ> PostMessage ( нужное окно , WM_ACTIVATE , .. ) вот ...
MOZ>Но это позорный метод :o)))
MOZ>
Это действительно происходит автоматом, но через секунды 3, а я хочу сразу
Здравствуйте, Filatov_AV, Вы писали:
F_A>Меняю иконку у папки.
F_A>в файле desktop.ini модифицирую строку: IconFile=ИмяНужнойМнеИконки.ico, сохраняю файл.
F_A>Какую функцию следует API вызвать, чтобы чтобы окно (допустим Explorer.exe) обновило вид папки
SHChangeNotify.
Здравствуйте, Filatov_AV, Вы писали:
F_A>Меняю иконку у папки.
F_A>в файле desktop.ini модифицирую строку: IconFile=ИмяНужнойМнеИконки.ico, сохраняю файл.
F_A>Какую функцию следует API вызвать, чтобы чтобы окно (допустим Explorer.exe) обновило вид папки
Благодарю всех кто откликнулся на мой вопрос и хочу закрыть эту тему...
Как оказалось, функцию никакую вызывать не нужно (типа SystemParametersInfo или SHChangeNotify).
Если я правильно понимаю, после сохранения файла desktop.ini система автоматом просекает изменения и вызавает нужные функции API. Все что нужно сделать, это обновить браузер, в котором просматривается папка. А можно и не делать

Все тот же стандартный,виндовый explorer обновляет свой вид с интервалом около 3 сек. Но я нетерпелив...
У explorer'а есть команда меню: Вид -> Обновить (F5). Поэтому, самый простой, на мой взгляд,
способ обновить его — это послать сообщение окну, что была нажата горячая клавиша F5.
Если кому интересно, привожу код:
...................................................
unsigned long processID;
GetWindowThreadProcessId(m_hWnd, &processID); // get parent processId
//refresh parent window (if it is EXLORER.EXE then SEND it F5)
if ( lstrcmp(GetProcessName(processID), "explorer.exe") == 0 ){
PostMessage(m_hWnd, WM_KEYDOWN, VK_F5, 0);
PostMessage(m_hWnd, WM_KEYUP, VK_F5, 0);
}
........................................
char* CrenumberExt::GetProcessName(unsigned long processId)
{
char szProcessName[MAX_PATH] = "";
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);
GetModuleBaseName(hProcess, 0, szProcessName, sizeof(szProcessName));
CloseHandle(hProcess);
CharLowerBuff(szProcessName, sizeof(szProcessName)); //to lowercase
return szProcessName;
}
Здравствуйте, Filatov_AV, Вы писали:
F_A>Здравствуйте, Filatov_AV, Вы писали:
F_A>>Меняю иконку у папки.
F_A>>в файле desktop.ini модифицирую строку: IconFile=ИмяНужнойМнеИконки.ico, сохраняю файл.
F_A>>Какую функцию следует API вызвать, чтобы чтобы окно (допустим Explorer.exe) обновило вид папки
F_A>Благодарю всех кто откликнулся на мой вопрос и хочу закрыть эту тему...
F_A>Как оказалось, функцию никакую вызывать не нужно (типа SystemParametersInfo или SHChangeNotify).
F_A> Если я правильно понимаю, после сохранения файла desktop.ini система автоматом просекает изменения и вызавает нужные функции API. Все что нужно сделать, это обновить браузер, в котором просматривается папка. А можно и не делать
Все тот же стандартный,виндовый explorer обновляет свой вид с интервалом около 3 сек. Но я нетерпелив...
F_A> У explorer'а есть команда меню: Вид -> Обновить (F5). Поэтому, самый простой, на мой взгляд,
F_A>способ обновить его — это послать сообщение окну, что была нажата горячая клавиша F5.
F_A>Если кому интересно, привожу код:
F_A>...................................................
А если я предпочитаю другой file manager ?