-
> б) работает на всех компах, кроме одного... >
Пока работает. Так карты выпали. Испорченная память не всегда приводит к AV.
-
> почему: > а) не падает на строке с FindWindow
А это совсем другая история)
И с какого собссно перепугу там что-то куда-то должно "падать" ? Нет, ну завалить , конечно, при особом перепуге можно что угодно.. Но ведь это еще и постараться нужно !)
> б) работает на всех компах, кроме одного...
То ли тебе не повезло, то ли у тебя ошибка в 17-й строке)
Я - за 17-ю строку, ежели что)..
-
> keymaster © (22.08.08 21:18) [19]
> Хм... Тогда почему...
Хм... не знаю. Я программист, а не гадалка. Вам ведь уже насчет партизана и 17-й строки сказали? Неужели код вызова FindWindow настолько секретен?
-
Будьте осторожны, за пытку программиста-партизана и выбивания из него кода программы можете попасть под Гаагский трибунал. И за меньшее сажали :)))
-
Или как там еще, не дай бог Буш приедет ему помогать. Прошу прощения.
-
> Хм... не знаю. Я программист, а не гадалка. Вам ведь уже > насчет партизана и 17-й строки сказали? Неужели код вызова > FindWindow настолько секретен?
if FindWindow(nil, 'Ouverture') <> 0 then
begin
MessageBox(0, 'Приложение уже запущено', 'Ouverture', 0);
exit;
end;
-
Я в этом не силен, но, может, окно надо искать после создания окна?
-
> if FindWindow(nil, 'Ouverture') <> 0 then
Кто-нибудь видит в этой строке хоть малейший повод для "падения" кого-то там куда-то там ?
Я не вижу ..
-
> Я в этом не силен, но, может, окно надо искать после создания > окна?
Надо найти такое же окно. И если оно уже есть - то вообще завершать работу.
-
> keymaster © (22.08.08 22:42) [25]
Нужен код от:
> Строка первая, идёт сразу после begin: > 22.08.2008 15:42 Application Started
и до...
> А дальше AV
-
> keymaster © (22.08.08 22:59) [28] > Надо найти такое же окно. И если оно уже есть - то вообще > завершать работу
Ну и ищи его себе на здоровье, хоть до второго пришествия ..
Но причем здесь Application.Initialize ?
-
Ну.. Если не должно, а все-ж таки падает, и именно на этой строке - я б попробовал #0 к строке добавить.
-
> Сергей М. © (22.08.08 23:02) [30] > > keymaster © (22.08.08 22:59) [28]> Надо найти такое > же окно. И если оно уже есть - то вообще > завершать работуНу > и ищи его себе на здоровье, хоть до второго пришествия . > .
Вы это о чём, собственно? Мне нужно найти определённое окно с целью предотвращения запуска второй копии приложения. > Andy BitOff © (22.08.08 23:00) [29] > > keymaster © (22.08.08 22:42) [25]Нужен код от:> Строка > первая, идёт сразу после begin:> 22.08.2008 15:42 Application > Startedи до...> А дальше — AV
begin
Log('Application Started');
if FindWindow(nil, 'Ouverture') <> 0 then
begin
MessageBox(0, 'Приложение уже запущено', 'Ouverture', 0);
exit;
end;
Log('FindWindow Result = Not Found');
Log('Application.Initialize');
Application.Initialize;
-
Покажи Log()
-
> Andy BitOff © (22.08.08 23:31) [33] > Покажи Log()
procedure Log(msg : String);
var
FLogFile : TextFile;
begin
AssignFile(FLogFile, 'log.txt');
Append(FLogFile);
Writeln(Flogfile, DateTimeToStr(now)+#32+msg);
CloseFile(FLogFile);
end;
-
> Сергей М. (22.08.2008 22:53:27) [27]
Вот справка
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
-
> keymaster (22.08.2008 22:59:28) [28]
Поиск окна не гарантирует правильности, для гарантии надо использовать мьютекс.
-
> Anatoly Podgoretsky © (22.08.08 23:49) [36] > > keymaster (22.08.2008 22:59:28) [28]Поиск окна не гарантирует > правильности, для гарантии надо использовать мьютекс.
так не в этом месте AV возникает...
-
> keymaster ©
Ну что я могу сказать, здесь ошибок нет, если не считать таковой то, что при отсутствии log.txt будет ошибка, которая не проверяется. В остальном нормально, должно работать. Ищи в другом месте. Пройди по F7.
-
> keymaster (22.08.2008 23:59:37) [37]
Совет про мьютекс не связан с AV
|