返回列表 发帖

[原创]调用计算器并使它居中显示

c的:
  1. &#35;include <windows.h>
  2. int APIENTRY WinMain(HINSTANCE hinstExe, HINSTANCE, PSTR pszCmdLine, int nCmdShow)
  3. {
  4. char cmdLine[] = "calc.exe";
  5. STARTUPINFO si = {sizeof(STARTUPINFO)};
  6. PROCESS_INFORMATION pi = {0};
  7. if(!CreateProcess(NULL, cmdLine, NULL, NULL, false, 0, NULL, NULL, &si, &pi))
  8. return -1;
  9. Sleep(300);
  10. RECT rc = {sizeof(RECT)};
  11. HWND hwnd = FindWindow(NULL, "计算器");
  12. if(NULL == hwnd)
  13. return -1;
  14. if(!GetWindowRect(hwnd, &rc))
  15. return -1;
  16. int cx = GetSystemMetrics(SM_CXSCREEN);
  17. int cy = GetSystemMetrics(SM_CYSCREEN);
  18. cx = (cx - rc.right + rc.left) / 2;
  19. cy = (cy - rc.bottom + rc.top) / 2;
  20. si.dwX = cx;
  21. si.dwY = cy;
  22. si.dwXSize = rc.right - rc.left;
  23. si.dwYSize = rc.bottom - rc.top;
  24. SetWindowPos(hwnd, HWND_TOPMOST, si.dwX, si.dwY, si.dwXSize, si.dwYSize, SWP_SHOWWINDOW);
  25. return 0;
  26. }
复制代码
  1. .386
  2. .model flat, stdcall
  3. option casemap:none
  4. include windows.inc
  5. include user32.inc
  6. include kernel32.inc
  7. includelib user32.lib
  8. includelib kernel32.lib
  9. .data?
  10. rect RECT <>
  11. hwnd HWND ?
  12. showx dword ?
  13. showy dword ?
  14. xsize dword ?
  15. ysize dword ?
  16. .data
  17. szName byte ';calc';, 0
  18. szApp byte ';计算器';, 0
  19. .code
  20. start:
  21. invoke WinExec, offset szName, 0
  22. invoke FindWindow, NULL, offset szApp
  23. MOV [hwnd], EAX
  24. invoke GetWindowRect, EAX, offset rect
  25. invoke GetSystemMetrics, SM_CXSCREEN
  26. SUB EAX, rect.right
  27. ADD EAX, rect.left
  28. SAR EAX, 1
  29. MOV [showx], EAX
  30. invoke GetSystemMetrics, SM_CYSCREEN
  31. SUB EAX, rect.bottom
  32. ADD EAX, rect.top
  33. SAR EAX, 1
  34. MOV [showy], EAX
  35. MOV EAX, rect.right
  36. SUB EAX, rect.left
  37. MOV [xsize], EAX
  38. MOV EAX, rect.bottom
  39. SUB EAX, rect.top
  40. MOV [ysize], EAX
  41. invoke SetWindowPos, hwnd, HWND_TOPMOST, showx, showy, xsize, ysize, SWP_SHOWWINDOW
  42. ret
  43. end start
复制代码

TOP

返回列表 回复 发帖