MSYY.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include <windows.h>
  2. #include <process.h> // 添加头文件以使用 _spawnlp
  3. #define ID_BUTTON_TOOLS 1
  4. #define ID_BUTTON_MOVE 2
  5. #define ID_BUTTON_CLOSE 3
  6. LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  7. switch (uMsg) {
  8. case WM_COMMAND:
  9. switch (LOWORD(wParam)) {
  10. case ID_BUTTON_TOOLS: {
  11. // MessageBox(hwnd, "正在运行 Python 脚本...", "Info", MB_OK);
  12. // 后台运行 python.exe my.py
  13. _spawnlp(_P_NOWAIT, "python.exe", "python.exe", "my.py", NULL);
  14. } break;
  15. case ID_BUTTON_MOVE: {
  16. MoveWindow(hwnd, GetSystemMetrics(SM_CXSCREEN) / 2, 0, 90, 30, TRUE);
  17. break;
  18. }
  19. case ID_BUTTON_CLOSE:
  20. PostMessage(hwnd, WM_CLOSE, 0, 0);
  21. break;
  22. }
  23. break;
  24. case WM_DESTROY:
  25. PostQuitMessage(0);
  26. return 0;
  27. default:
  28. return DefWindowProc(hwnd, uMsg, wParam, lParam);
  29. }
  30. return 0;
  31. }
  32. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
  33. const char CLASS_NAME[] = "NoTitleWindow";
  34. WNDCLASS wc = {};
  35. wc.lpfnWndProc = WindowProc;
  36. wc.hInstance = hInstance;
  37. wc.lpszClassName = CLASS_NAME;
  38. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  39. wc.style = CS_HREDRAW | CS_VREDRAW;
  40. RegisterClass(&wc);
  41. int windowWidth = 90;
  42. int windowHeight = 30;
  43. int x = (GetSystemMetrics(SM_CXSCREEN) - windowWidth) / 2;
  44. int y = (GetSystemMetrics(SM_CYSCREEN) - windowHeight) / 2;
  45. HWND hwnd = CreateWindowEx(WS_EX_TOPMOST, CLASS_NAME, NULL, WS_POPUP, x, y, windowWidth, windowHeight, NULL, NULL,
  46. hInstance, NULL);
  47. if (hwnd == NULL) {
  48. return 0;
  49. }
  50. HWND hButtonTools = CreateWindow("BUTTON", "MSYY", WS_VISIBLE | WS_CHILD | BS_FLAT, 0, 0, 60, 30, hwnd,
  51. (HMENU)ID_BUTTON_TOOLS, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL);
  52. HWND hButtonMove = CreateWindow("BUTTON", "V", WS_VISIBLE | WS_CHILD | BS_FLAT, 60, 15, 30, 15, hwnd,
  53. (HMENU)ID_BUTTON_MOVE, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL);
  54. HWND hButtonClose = CreateWindow("BUTTON", "X", WS_VISIBLE | WS_CHILD | BS_FLAT, 60, 0, 30, 15, hwnd,
  55. (HMENU)ID_BUTTON_CLOSE, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL);
  56. ShowWindow(hwnd, nShowCmd);
  57. UpdateWindow(hwnd);
  58. MSG msg;
  59. while (GetMessage(&msg, NULL, 0, 0)) {
  60. TranslateMessage(&msg);
  61. DispatchMessage(&msg);
  62. }
  63. return 0;
  64. }