Einzelnen Beitrag anzeigen

Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#26

Re: Suche Tool für USB-Stick ...

  Alt 13. Aug 2006, 14:38
Zitat von vagus:
das war ja meine frage von vorhin:
ob mir jemand aus diesem profi-forum so was machen könnte/würde?
ALso einfach ein Programm,d ass beim Starten eine Batch-Datei ausführt und beim Beenden eine andere?
Das wäre schnell gemacht:

Hier mal eine Quick'n Dirty Lösung (ohne Garantie auf Funktionalität):

Delphi-Quellcode:
program USBStickMounter;

uses
  Windows, Messages, ShellApi;

const
  ClassName = 'WndClass';
  IDC_BUTTON = 3;

var
  hwndButton: DWORD;

function WndProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):
  lresult; stdcall;
begin
  Result := 0;
  case uMsg of
    WM_CREATE:
    begin
      // Batch beim Starten
      ShellExecute(hWnd, 'open', 'start.cmd', '', '', 0);
      hwndButton := CreateWindowEx(WS_EX_APPWINDOW, 'BUTTON', 'Schließen', WS_VISIBLE or WS_CHILD, 5, 5, 100, 25, hWnd, IDC_BUTTON, hInstance, nil);
    end;
    WM_COMMAND:
    begin
      if hiword(wParam) = BN_CLICKED then
      case loword(wParam) of
        IDC_BUTTON:
        begin
          SendMessage(hwnd, WM_DESTROY, 0, 0);
        end;
      end;
    end;
    WM_DESTROY:
    begin
      // Batch beim Beenden
      ShellExecute(hWnd, 'open', 'close.cmd', '', '', 0);
      PostQuitMessage(0);
    end;
  else
    Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  end;
end;

var
  wc: TWndClassEx = (
    cbSize: SizeOf(TWndClassEx);
    Style: CS_HREDRAW or CS_VREDRAW;
    lpfnWndProc: @WndProc;
    cbClsExtra: 0;
    cbWndExtra: 0;
    hbrBackground: COLOR_APPWORKSPACE;
    lpszMenuName: nil;
    lpszClassName: ClassName;
    hIconSm: 0;
  );
  msg: TMsg;
begin
  wc.hInstance := hInstance;
  wc.hIcon := LoadIcon(hInstance, MAKEINTRESOURCE(100));
  wc.hCursor := LoadCursor(0, IDC_ARROW);
  RegisterClassEx(wc);
  CreateWindowEx(WS_EX_TOPMOST, ClassName, 'USB-Stick', WS_CAPTION or WS_VISIBLE or WS_BORDER, 0, GetSystemMetrics(SM_CYSCREEN) - 90, 130, 60, 0, 0, hInstance, nil);
  while GetMessage(msg,0,0,0) do
  begin
    TranslateMessage(msg);
    DispatchMessage(msg);
  end;
  ExitCode := msg.wParam;
end.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat