Есть у меня ещё одно подозрение, что весь гимор с кодировками происходит
"
на лету". В частности, у меня не работал
appletviewer.exe от
Java - путался
с путями типа:
C:\\WORK\\J2SDK1_4\\BIN\\appletviewer.exe
C:\WORK\J2SDK1_4\BIN\appletviewer.exe
вот эти двойные слэши появлялись "
на лету" и это приводило к тому, что путь
не находился. Пришлось написать виндавозную затычку, меняющую пути "
по пути",
назвать её
applet.exe и ассоциировать с ней все системные вызовы
appletviewer.exe
по умолчаниям.
applet.exe далее сама вызывает
appletviewer.exe с параметрами:
Code: Select all
// здесь много лишнего за комментами - отслеживал что происходит в отладке...
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
//---------------------- Запускаем appletviewer.EXE --------------------------------------
Buf[0]=0x22; // ->"<-
if(strlen(lpCmdLine)!=0)
{
// ClsBuff[256];
// result=GetCurrentDirectory(256,ClsBuff);
// strcpy(ClsName, "");//--- смотрим имя CurrentDirectory --
// strncat(ClsName, ClsBuff, result);
// MessageBox(0,ClsName," CurrentDirectory:",MB_ICONWARNING);
// MessageBox(0, lpCmdLine, " CommandLine:", MB_ICONWARNING);
strcpy(pat, "");
strcpy(pat, "appletviewer ");
// C:\\WORK\\J2SDK1_4\\BIN\\appletviewer.exe
// C:\WORK\J2SDK1_4\BIN\appletviewer.exe
strcpy(mes,"");
strcpy(tmp,"");
// выделяем только имя файла этими манипуляциями
strcpy(mes,strrchr(lpCmdLine,0x5c)); // ищем
strrev(mes);
strncat(tmp,mes,strlen(mes)-1);
strrev(tmp);
// MessageBox(0, tmp, " Command:", MB_ICONWARNING);
// strcpy(mes,"");
// иначе добавляем кавычки
strcat(pat, Buf); // в начале и
strcat(pat, tmp);
strcat(pat, Buf); // в конце
// MessageBox(0, pat, " Command:", MB_ICONWARNING);
// SetCurrentDirectoryA
result=WinExec(pat,SW_MINIMIZE); //MINIMIZED or SW_SHOW
}
Также пришлось порешать аналогичную проблему для
Professional Notepad.
Мне думается, если точно бы отследить момент, где происходит трабла с кодировкой
у сабжа с "
Рабочим столом", это вполне можно было бы отследить и скорректировать
"
на лету", но я никак не отслежу причину и повторяемость траблы, а в этом случае
утилиты - "следилки" выкидывают объём информации, который трудно анализировать.