Доброго всем времени дня и суток ! У меня возникла следующая ситуация. Написал GUI для industrial application, прогу мою на консервной фабрике юзать будут. По сему клиент мой попросил меня сделать GUI на весь экран, дабы для идиота всё выглядело так, как будто кроме этой проги на компе больше вообще ничего не установлено. Проблема возникает следуюшая: кое-какие данные нужно периодически сохранять на USB flash drive, но вот выдёргивать его из компа так просто нежелательно, сначала надо на Unplug or Eject Hardware иконке кликнуть, а та диалог на передний план вынесет. Вопрос: можно ли создать иконку на МОЁМ GUI, клкнув на которой произошло бы то же самое, как если бы я кликнул на системной иконке Unplug or Eject Hardware ? Заранее благодарен за оыветы.
Попробуй вот это: "rundll32 shell32.dll,Control_RunDLL hotplug.dll c:\winnt\system32\rundll32.exe winsta0\default"
2 Vovane Спасибо тебе за информацию, но я не совсем понял, как это можно встроить в С-ишный код. Я попробовал вот это, но ничего не получилось: ShellExecute( this->m_hWnd, NULL, "rundll32 shell32.dll,Control_RunDLL hotplug.dll c:\winnt\system32\rundll32.exe winsta0\default", NULL, NULL, SW_SHOWNORMAL ); Можешь пояснить, как эти команды из проги вызывать ? Заранее благодарен
.586 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib .data szdrew db "rundll32 shell32.dll,Control_RunDLL hotplug.dll",0 .code start: mov ecx, offset szdrew call RuuCommand invoke ExitProcess, 0 ;#################################################### RuuCommand proc LOCAL lpCommandLine : dword LOCAL ProCinf : PROCESS_INFORMATION LOCAL StartupInfo : STARTUPINFOA mov lpCommandLine, ecx mov StartupInfo.cb, 44h mov StartupInfo.lpReserved, 0 mov StartupInfo.lpDesktop, 0 mov StartupInfo.lpTitle, 0 mov StartupInfo.dwX, 0 mov StartupInfo.dwY, 0 mov StartupInfo.dwXSize, 0 mov StartupInfo.dwYSize, 0 mov StartupInfo.dwXCountChars, 0 mov StartupInfo.dwYCountChars, 0 mov StartupInfo.dwFillAttribute, 0 mov StartupInfo.wShowWindow, 0 mov StartupInfo.dwFlags, 0 mov StartupInfo.cbReserved2, 0 mov StartupInfo.lpReserved2, 0 mov StartupInfo.hStdInput, 0 mov StartupInfo.hStdOutput, 0 mov StartupInfo.hStdError, 0 lea eax, ProCinf push eax lea ecx, StartupInfo push ecx push 0 push 0 push 0 push 0 push 0 push 0 mov edx, lpCommandLine push edx push 0 call CreateProcess .if eax != 0 invoke CloseHandle, ProCinf.hProcess invoke CloseHandle, ProCinf.hThread mov eax, 1 .else xor eax, eax .endif ret RuuCommand endp end start
vinnie_pooh & Vovane Урра, заработало ! Для тех, кто столкнётся с такой проблемой, вот что нужно седелать: WinExec("rundll32 shell32.dll,Control_RunDLL hotplug.dll", SW_SHOW ); Спасибо вам, ребята !
[offtop] IMHO лучше не париться с "Unplug or Eject Hardware" - нужно запретить кеширование для флэша и можно вытаскивать спокойно. Не нужно неоправданно усложнять интерфейс - на иконку мона и забыть нажать [/offtop]