最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

項(xiàng)目備份

2023-06-22 13:54 作者:FAST少年  | 我要投稿

#include #include #include #include #include #include #include #include #include #include #include #include #include #define SHM_FLAG 0666 // 模擬系統(tǒng)進(jìn)程的窗口類名和標(biāo)題 #define WINDOW_CLASSNAME "Shell_TrayWnd" #define WINDOW_TITLE "任務(wù)欄" typedef struct { DWORD pid; int sockfd; } share_data; // 關(guān)閉相鄰進(jìn)程 void CloseAdjacentProcess(DWORD pid); BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam); void* thread_func(void* arg) { // 創(chuàng)建Socket并綁定 int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in servaddr; memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = IN_ANY; servaddr.sin_port = htons(0); if (bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) { perror("bind error"); exit(1); } ? // 獲取已分配的端口號(hào) struct sockaddr_in addr; socklen_t len = sizeof(addr); getsockname(sockfd, (struct sockaddr*)&addr, &len); int port = ntohs(addr.sin_port); // 創(chuàng)建Socket并連接到服務(wù)器 const char* server_ip = "127.0.0.1"; int server_port = 12345; int server_sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(server_port); inet_pton(AF_INET, server_ip, &server_addr.sin_addr); connect(server_sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); // 發(fā)送自己的Socket端口號(hào) share_data share_data; share_data.pid = 0; share_data.sockfd = sockfd; write(server_sockfd, &share_data, sizeof(share_data)); // 監(jiān)聽Socket listen(sockfd, 1); // 接受客戶端連接 int connfd = accept(sockfd, (struct sockaddr*)NULL, NULL); // 讀取共享內(nèi)存中PID DWORD pid = 0; read(connfd, &pid, sizeof(DWORD)); // 寫入當(dāng)前程序的PID DWORD my_pid = GetCurrentProcessId(); write(connfd, &my_pid, sizeof(DWORD)); // 執(zhí)行1 + 1操作 int a = 1, b = 1; int sum = a + b; // 判斷結(jié)果是否等于2,如果等于2則關(guān)閉相鄰進(jìn)程 if (sum == 2) { ??// 獲取共享內(nèi)存中的數(shù)據(jù),判斷是否已經(jīng)在其他線程中關(guān)閉了相鄰進(jìn)程 ??share_data other_share_data; ??read(connfd, &other_share_data, sizeof(other_share_data)); ??DWORD other_pid = other_share_data.pid; ??if (other_pid != 0 && other_pid != pid) { ????// 關(guān)閉相鄰進(jìn)程 ????CloseAdjacentProcess(other_pid); ????// 發(fā)送自己的PID到對(duì)方進(jìn)程 ????share_data.pid = my_pid; ????write(other_share_data.sockfd, &share_data, sizeof(share_data)); ????// 將程序窗口圖標(biāo)置灰 ????PROCESSENTRY32 entry; ????entry.dwSize = sizeof(PROCESSENTRY32); ????HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); ????if (Process32First(hSnap, &entry)) { ??????do { ????????if (entry.th32ProcessID == other_pid) { ??????????// 枚舉進(jìn)程的所有窗口,并將圖標(biāo)置灰 ??????????EnumWindows(EnumWindowsProc, (LPARAM)other_pid); ??????????break; ????????} ??????} while (Process32Next(hSnap, &entry)); ????} ????CloseHandle(hSnap); ??} ??// 分離共享內(nèi)存 ??close(other_share_data.sockfd); ??close(connfd); ??close(sockfd); ??return NULL; } // 發(fā)送共享內(nèi)存中的PID到下一個(gè)線程 share_data.pid = pid; write(server_sockfd, &share()); // 分離共享內(nèi)存 shmdt(ptr); return NULL; ? } int main() { const int NUM_THREADS = 5; const int port = 12345; const char* server_ip = "127.0.0.1"; ? // 請(qǐng)求管理員權(quán)限 char path[MAX_PATH]; GetModuleFileName(NULL, path, MAX_PATH); ShellExecute(NULL, "runas", path, NULL, NULL, SW_SHOW); // 創(chuàng)建Socket并連接到服務(wù)器 int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in servaddr; memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(port); inet_pton(AF_INET, server_ip, &servaddr.sin_addr); connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)); // 創(chuàng)建共享內(nèi)存 int shmid = shmget(IPC_PRIVATE, sizeof(share_data), IPC_CREAT | SHM_FLAG); if (shmid == -1) { ??perror("shmget failed"); ??exit(1); } // 獲取共享內(nèi)存指針 share_data* ptr = (share_data*)shmat(shmid, NULL, 0); if (ptr == (void*) -1) { ??perror("shmat failed"); ??exit(1); } // 初始化共享內(nèi)存 ptr->pid = 0; ptr->sockfd = sockfd; // 創(chuàng)建多個(gè)線程 pthread_t threads[NUM_THREADS]; for (int i = 0; i < NUM_THREADS; i++) { ??pthread_create(&threads[i], NULL, thread_func, NULL); } // 等待線程結(jié)束 for (int i = 0; i < NUM_THREADS; i++) { ??pthread_join(threads[i], NULL); } // 刪除共享內(nèi)存 shmctl(shmid, IPC_RMID, NULL); return 0; ? } // 關(guān)閉相鄰進(jìn)程 void CloseAdjacentProcess(DWORD pid) { HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pid); if (hProcess != NULL) { BOOL bRet = TerminateProcess(hProcess, 0); CloseHandle(hProcess); } } // 枚舉窗口回調(diào)函數(shù) BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { DWORD pid = 0; GetWindowThreadProcessId(hwnd, &pid); if (pid == (...DWORD)lParam) { // 將窗口圖標(biāo)置灰 HICON hIcon = LoadIcon(NULL, IDI_APPLICATION); SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon); SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon); return FALSE; } return TRUE; }??

項(xiàng)目備份的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
明溪县| 南岸区| 上蔡县| 孟津县| 电白县| 雷山县| 绍兴县| 荔浦县| 遂溪县| 阜阳市| 女性| 灵石县| 阿鲁科尔沁旗| 邹城市| 义乌市| 开化县| 五莲县| 平果县| 南涧| 普兰县| 大姚县| 望奎县| 深州市| 尼勒克县| 汝南县| 蒙阴县| 余庆县| 皋兰县| 无锡市| 隆回县| 界首市| 宜宾市| 北流市| 老河口市| 乐陵市| 萝北县| 靖远县| 容城县| 清丰县| 堆龙德庆县| 濮阳县|