Форум программистов, компьютерный форум CyberForum.ru

Реализация поиска запущенных копий приложения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Протокол UCI - нужен пример хорошего движка для шахмат http://www.cyberforum.ru/cpp/thread132385.html
Доброго времени суток! Я на данный момент пишу шахматный движок по протоколу UCI, процесс идет не уверенно... На данный момент не реализованно и половины комманд, а обыграть его сможет даже трехлетний ребенок. Было бы очень интересно ознакомится с движком чужой разработки... Существует очень много движков, Но беда в том, что сами движки найти гораздо легче чем их код. Если кто-нибудь...
C++ Программа для отправки сообщений smtp с произвольного сервера (что-то вроде MDA) Нашёл в интернете, немного дороботал пример отправки сообщений через smtp. Ничего толкового не получилось, программа способна, так сказать, только отсылать спам -- все попытки отправки сообщений к примеру через smtp.list.ru (или smtp.mail.ru) расцениваются как спам . Возможно тут какая-то проблемма с caller ID. http://www.cyberforum.ru/cpp/thread132256.html
нарисовать C++
привет всем помогите нарисовать камень который падает с горы и натыкается на выпуклые преграды спасибо за любую помощь или подсказку =)
C++ Быстрое чтение большого файла. Зависает процесс
Всем доброго времени суток. Есть задача прочитать файл(1-20 мб), который состоит из слов разделённых пробелами для того, чтобы переписать все слова в массив string-ов. Затем с этими словами проводятся операции и все они записываются уже в другой файл. Однако, после выполнения задачи и закрытия приложения, процесс остаётся висеть в диспетчере. А в описании процесса пишется "TODO: <File...
C++ Программа на С++ http://www.cyberforum.ru/cpp/thread131899.html
Написать программу на С++ Создать файл, содержащий текст, набранный заглавными английскими буквами. Провести частотный анализ текста, т.е. указать (в процентах), сколько раз встречается та или иная буква.
C++ Переделать рабочий код Нужно изменить код программы. Она рабочая, но нужно, чтобы была прозрачной и отличалась от оригинала: #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <time.h> #include <dos.h> #include <fstream.h> #include <math.h> #include <process.h> подробнее

Показать сообщение отдельно
nec
14 / 14 / 2
Регистрация: 19.05.2010
Сообщений: 41
20.05.2010, 11:42     Реализация поиска запущенных копий приложения
Метод основан на EnumWindows. Критерий поиска копий - имя класса окна.
Идея в том, чтобы при запуске перебрать все открытые окна, узнавая их класс. Если класс совпадает с нашим приложением - это копия, скорее всего (если ты выбрал имя класса окна уникальное) =)

Параметр - ссылка на счетчик. Так как вызов перечисления происходит до создания еще одного экземпляра окна, то счетчик должен быть > 1 (или >= 2).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <windows.h>
 
static char appname[] = "myEnumWin";
 
long CALLBACK winProc(HWND, UINT, WPARAM, LPARAM);
 
BOOL CALLBACK enumProc(HWND hwnd, LPARAM counter)
{
   char className[128];
 
   if (GetClassName(hwnd, &(className[0]), sizeof(className)))
   {
      if (!strcmp(className, appname))
      {
         (*(int *)counter) += 1;
      }
   }
 
   return 1;
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   int windowCounter = 0;
   EnumWindows(enumProc, (LPARAM)&windowCounter);
   if (windowCounter > 1) MessageBox(NULL, NULL, NULL, MB_OK);
 
   WNDCLASSEX wclass;
   HWND wh;
   MSG msg;
 
 
   wclass.cbSize = sizeof(wclass);
   wclass.style = CS_HREDRAW | CS_VREDRAW;
   wclass.lpfnWndProc = winProc;
   wclass.hInstance = GetModuleHandle(NULL);
   wclass.hIcon = NULL;
   wclass.hCursor = LoadCursor(NULL, IDC_ARROW);
   wclass.hbrBackground = (HBRUSH) GetStockObject(COLOR_WINDOWFRAME);
   wclass.lpszMenuName = NULL;
   wclass.lpszClassName = appname;
   wclass.hIconSm = NULL;
 
   wclass.cbClsExtra = 0;
   wclass.cbWndExtra = 0;
 
   RegisterClassEx(&wclass);
 
   wh = CreateWindow(appname,
      "demowin",
      WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT,
      CW_USEDEFAULT,
      240,
      320,
      NULL,
      NULL,
      GetModuleHandle(NULL),
      NULL
   );
 
   ShowWindow(wh, SW_SHOW);
   while (GetMessage(&msg, NULL, 0, 0)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   
 
   ExitProcess(0);
}
 
long CALLBACK winProc(HWND wh, UINT msg, WPARAM wparam, LPARAM lparam) {
   switch (msg)
   {
      case WM_KEYDOWN:
         if (wparam == VK_ESCAPE) DestroyWindow(wh);
         break;
 
      case WM_DESTROY:
         PostQuitMessage(0);
         break;
 
      default:   
         return DefWindowProc(wh, msg, wparam, lparam);
   }
   return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru