Windows.Shell32.Mod 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. (* Copyright (c) 2004 - 2005 DP Sisteme 2000 srl*)
  2. MODULE Shell32; (** non-portable / source: Windows.Shell32.Mod *)
  3. IMPORT SYSTEM, Kernel32, Modules;
  4. CONST
  5. (*
  6. #define SW_HIDE 0
  7. #define SW_SHOWNORMAL 1
  8. #define SW_NORMAL 1
  9. #define SW_SHOWMINIMIZED 2
  10. #define SW_SHOWMAXIMIZED 3
  11. #define SW_MAXIMIZE 3
  12. #define SW_SHOWNOACTIVATE 4
  13. #define SW_SHOW 5
  14. #define SW_MINIMIZE 6
  15. #define SW_SHOWMINNOACTIVE 7
  16. #define SW_SHOWNA 8
  17. #define SW_RESTORE 9
  18. #define SW_SHOWDEFAULT 10
  19. #define SW_FORCEMINIMIZE 11
  20. #define SW_MAX 11
  21. *)
  22. SWNORMAL* = 1;
  23. TYPE
  24. LPCSTR* = ADDRESS;
  25. HWND* = Kernel32.HANDLE;
  26. HINSTANCE* = Kernel32.HINSTANCE;
  27. INT* = LONGINT;
  28. VAR
  29. shell32: Kernel32.HMODULE;
  30. ShellExecute-: PROCEDURE {WINAPI}
  31. (hwnd: HWND; lpOperation, lpFile: ARRAY OF CHAR; lpParameters, lpDirectory: LPCSTR; nShowCmd: INT): HINSTANCE;
  32. PROCEDURE TermMod;
  33. BEGIN
  34. IF shell32 # Kernel32.NULL THEN
  35. Kernel32.FreeLibrary(shell32); shell32 := Kernel32.NULL
  36. END
  37. END TermMod;
  38. PROCEDURE Init;
  39. VAR str: ARRAY 32 OF CHAR;
  40. BEGIN
  41. str := "shell32.dll";
  42. shell32 := Kernel32.LoadLibrary(str);
  43. Kernel32.GetProcAddress(shell32, "ShellExecuteA", SYSTEM.VAL(ADDRESS, ShellExecute));
  44. Modules.InstallTermHandler(TermMod)
  45. END Init;
  46. BEGIN
  47. Init()
  48. END Shell32.