Можно ли вынести на юзерский GUI системную икону ?

Тема в разделе "WASM.WIN32", создана пользователем Sokol_2, 19 фев 2005.

  1. Sokol_2

    Sokol_2 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    23
    Адрес:
    South Africa
    Доброго всем времени дня и суток !



    У меня возникла следующая ситуация. Написал GUI для industrial application, прогу мою на консервной фабрике юзать будут. По сему клиент мой попросил меня сделать GUI на весь экран, дабы для идиота всё выглядело так, как будто кроме этой проги на компе больше вообще ничего не установлено.

    Проблема возникает следуюшая: кое-какие данные нужно периодически сохранять на USB flash drive, но вот выдёргивать его из компа так просто нежелательно, сначала надо на Unplug or Eject Hardware иконке кликнуть, а та диалог на передний план вынесет.

    Вопрос: можно ли создать иконку на МОЁМ GUI, клкнув на которой произошло бы то же самое, как если бы я кликнул на системной иконке Unplug or Eject Hardware ?



    Заранее благодарен за оыветы.
     
  2. Vovane

    Vovane New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    58
    Адрес:
    Afghanistan
    Попробуй вот это:

    "rundll32 shell32.dll,Control_RunDLL hotplug.dll c:\winnt\system32\rundll32.exe winsta0\default"
     
  3. Sokol_2

    Sokol_2 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    23
    Адрес:
    South Africa
    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 );



    Можешь пояснить, как эти команды из проги вызывать ?



    Заранее благодарен
     
  4. vinnie_pooh

    vinnie_pooh New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    98
  5. Vovane

    Vovane New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    58
    Адрес:
    Afghanistan
    .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
     
  6. Sokol_2

    Sokol_2 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    23
    Адрес:
    South Africa
    vinnie_pooh & Vovane



    Урра, заработало ! Для тех, кто столкнётся с такой проблемой, вот что нужно седелать:



    WinExec("rundll32 shell32.dll,Control_RunDLL hotplug.dll", SW_SHOW );



    Спасибо вам, ребята !
     
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    [offtop]

    IMHO лучше не париться с "Unplug or Eject Hardware" - нужно запретить кеширование для флэша и можно вытаскивать спокойно.

    Не нужно неоправданно усложнять интерфейс - на иконку мона и забыть нажать

    [/offtop]