Автор | Сообщение |
|
| |
Пост N: 855
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.08.08 17:57. Заголовок: Как запретить запуск одной проги несколько раз ?
Есть какая то функция в Xharbour ? PS Вроде был такой вопрос , но пока не найду........
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 05.08.08 18:12. Заголовок: Checks if a given EX..
Checks if a given EXE is already running. Syntax: IsExeRunning( <cExeName> ) --> lRunning
|
|
|
|
| |
Пост N: 856
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.08.08 18:16. Заголовок: Не вижу такой функци..
Не вижу такой функции в xharbour...
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 05.08.08 18:20. Заголовок: Нда ?! А где ты ее н..
Нда ?! А где ты ее не видишь, я ее из харборовского хелпа и взял
|
|
|
|
| |
Пост N: 857
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.08.08 18:23. Заголовок: В сырцах не вижу да ..
В сырцах не вижу да и не собирается , в виду того что нет такой функции
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 05.08.08 18:25. Заголовок: А, извиняюсь, это я ..
А, извиняюсь, это я по FWH 8.4 Но ты же вроде FWH и использовал
|
|
|
|
| |
Пост N: 858
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.08.08 18:27. Заголовок: Нет не FWH , а чисто..
Нет не FWH , а чисто Xharbour реализация нужна.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 05.08.08 18:35. Заголовок: ну FindWindow() то в..
ну FindWindow() то в харборе небось есть, ну и найди по заголовку
|
|
|
|
| модератор
|
Пост N: 824
Зарегистрирован: 25.05.05
|
|
Отправлено: 05.08.08 18:35. Заголовок: fil пишет: IsExeRun..
|
|
|
|
| |
Пост N: 860
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.08.08 18:54. Заголовок: gfilatov Спасибо !!..
gfilatov Спасибо !!!!!!!
|
|
|
|
| |
Пост N: 861
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.08.08 19:56. Заголовок: gfilatov Русской до..
gfilatov Русской доки не появилось случайно ? С ней было бы вопросов на много меньше у всех.
|
|
|
|
| модератор
|
Пост N: 825
Зарегистрирован: 25.05.05
|
|
Отправлено: 05.08.08 21:10. Заголовок: Dima пишет: Русской..
Dima пишет: цитата: | Русской доки не появилось случайно ? |
| Здесь требуется не дока по Харбору, а - по использованию WinAPI
|
|
|
|
|
| |
Пост N: 862
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.08.08 11:05. Заголовок: gfilatov Где взять ..
gfilatov Где взять доку по WINAPI на русском ?
|
|
|
|
| постоянный участник
|
Пост N: 39
Зарегистрирован: 06.02.07
|
|
Отправлено: 06.08.08 16:10. Заголовок: Я сейчас как раз зан..
Я сейчас как раз занимаюсь переводом-оформлением MINIGUI.CHM (HMG ver.1.53 - но для 1.54, думаю, добавок-переделок будет немного). Сильно быстро ("вчера!") не гарантирую - но постараюсь побыстрее (самому нужно, чтобы не париться каждый раз с переводом "в мозгах"!)... Кто может посмотреть "на корректность перевода терминологии"? (например, "implicit" как "по-русски" перевести? "имплицитная"? не всякий - да и я "с устатку" - поймет...).
|
|
|
|
| постоянный участник
|
Пост N: 470
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.08.08 17:47. Заголовок: gustow пишет: напри..
gustow пишет: цитата: | например, "implicit" как "по-русски" перевести? "имплицитная"? |
| лучше "неявная" выкладывайте - посмотрим
|
|
|
|
| постоянный участник
|
Пост N: 41
Зарегистрирован: 06.02.07
|
|
Отправлено: 07.08.08 17:33. Заголовок: Бросил тройку страни..
Бросил тройку страничек (заглавная, "Ваша первая программа" [как пример статьи] и "Action" [как пример описания команды]) - просто "на поглядеть-поругать-похвалить". Оно тут: http://upi-rock.narod.ru/MiniGUI_help/index.htm Комменты можно (кроме как сюда) и на < gustow33 at mail.ru >
|
|
|
|
| |
Пост N: 863
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.08.08 09:54. Заголовок: gustow Что то нет т..
gustow Что то нет там ни чего..
|
|
|
|
| постоянный участник
|
Пост N: 472
Зарегистрирован: 09.10.06
|
|
Отправлено: 08.08.08 10:50. Заголовок: Dima пишет: Что то ..
Dima пишет: Кнопка зеленая с стрелочкой - напротив "Всем привет"
|
|
|
|
| постоянный участник
|
Пост N: 473
Зарегистрирован: 09.10.06
|
|
Отправлено: 08.08.08 13:36. Заголовок: gustow пишет: прост..
gustow пишет: цитата: | просто "на поглядеть-поругать-похвалить" |
| Я бы определился с стилем написания - или это "для чайников" и тогда выражения типа - пусть она вякнет "Здравствуйте, люди добрые!"; 'Жамкни по мне - бибикну!' могут быть уместны (правда писать в таком стиле тоже уметь нужно ) или.. цитата: | Ну, про PROCEDURE и RETURN говорить нечего (или вы никогда не программировали? ладно... |
| Спрашивать у чайников о программировании, ну еще ладно.. цитата: | это начало и конец процедуры Main - и в каждой (x)Harbour-программе должна быть процедура [и только одна!] c таким именем; с нее начинается выполнение всей программы |
| It's not true. Т.е. не совсем правда. Как вы думаете, что будет выведено на консоль в результате выполнения этой программы цитата: | --- start file --- PROCEDURE MyMain() ? "Hello from MyMain()" RETURN PROCEDURE _AppMain() ? "Hello from _AppMain()" RETURN PROCEDURE Main() ? "Hello from Main()" RETURN --- end file--- |
| В моем понимании эта фраза - "выполняемое при клике мышью на контроле" должна была бы звучать как "выполняемое при щелчке мышью на элементе управления" цитата: | @ 20, 20 LABEL L1 ; VALUE "Стереть всё нафиг" ; ACTION { || dal:=DeleteAllNafig(), ; iif( dal=.T., MsgInfo("Всё нафиг стёрто, мой господин!"), ; MsgInfo("Ни фига не стёрто, мой господин!") ) } |
| Аккуратнее с примерами. Я понимаю, что примеры тоже надо уметь писать, но не забывайте, что на них учатся другие. цитата: | @ 20, 20 LABEL L1 ; VALUE "Стереть всё нафиг" ; ACTION { || MsgInfo( iif( DeleteAllNafig(), "Всё нафиг стёрто, мой господин!", "Ни фига не стёрто, мой господин!" ) } |
|
|
|
|
|
| постоянный участник
|
Пост N: 42
Зарегистрирован: 06.02.07
|
|
Отправлено: 11.08.08 00:59. Заголовок: По стилю - понял... ..
По стилю - понял... Буду строже (и ТОЧНО копировать примеры [без "самодеятельности"]). Устраивает ли "общий вид"? Нужны ли мои "добавки" - например, скриншоты получающегося в приведенном (в читаемой статье) примере? Насчет цитата: | (правда писать в таком стиле тоже уметь нужно ) |
|
- конечно, не собираюсь писать "(x)Harbour+MiniGUI" для чайников" :) ... но судя по (достаточно большому) количеству вопросов, задаваемых в форуме, "гУрам" иногда приходится объяснять начинающим для них ("для "гур") _очевидное_ и _элементарное_ "на пальцах" (я без всякого наезда и на вас, Петр, и на остальных "более разбирающихся" - но припомните, _что_ иногда спрашивают!)... Хотелось бы, чтобы для "новичка" (перед которым стоит банальная задача: есть старая прога, сделанная на Клиппере; Клиппер я немного знаю, исходники есть [или EXEшка декомпилирована]; как из нее сделать что-то "современное" - с кнопочками, рюшечками и пр.? о! есть какой-то "харбор", к нему какая-то "мини-гуЯ"... ммммм... и как этим пользоваться [не особенно-то разбираясь и в самом-то Клиппере]???)... Пиша эти примерчики, ориентировался на уровень "познаний" теток-программерш из своей "минздравовской" конторы (где приходится поддерживать еще n-ное кол-во "древних" разработок, которые "писать с нуля" и некому и некогда): им - видя мои "пробы пера" с ГУЯми - и хочется, и колется (язык-то знакомый - только кой-чему "без особого напряга" подучиться; и будет она писать проги "прямо как на Вижал Се")... Да еще ориентировался на то, как объясняю "основы" своей 13-летней дочке - и она уже вполне "программит"!.. Конечно, это не аргументы для превращения _справочника_ в "цирк"... так что постараюсь быть "построже". В общем, кину на днях еще - и буду ждать "правок" (я не обижаюсь на _обоснованную_ критику - все-таки никакой я не "тех.пис."; но... что-то никто из "умеющих писать" почему-то до сих пор не "отважился" - что, кстати, скажется и на кол-ве желающих попользоваться МиниГУИ... да и Харбором как таковым [а зачем тогда Григорий со товарищи всё это "лудят"?? для пары-тройки гиков?]). Да! еще напоследок (опять же без желания "открывать дискуссию") - в приведенном Петром примере имеется три процедуры с РАЗНЫМИ именами... Петр, просто из теоретического интереса попробуйте в _одном_ .PRG создать _две_ функции MAIN() (именно с _одинаковыми_ - абсолютно - именами; и без всяких придумок - а просто)... Я, как ни старался, так и не смог скормить _такое_ компилятору (он, придурок, почему-то "ругался")... Но вдруг у вас получится? Кстати, Петр, спасибо (без стёба - большое!) за критику и поправки (насколько я понимаю - остальным либо влом, либо нафиг не интересно). И не перенести ли вопрос "о русской доке" в отдельную ветку? Товарищи! Еще раз подчеркиваю - я ЧАЙНИК!!! (во всяком случае, таковым себя считаю - поскольку знаю достаточно много программистов, по сравнению с которыми я действительно не знаю практически НИЧЕГО). Однако же достаточно много и таких, которые "завтра узнают то, что я уже давно забыл"... :)
|
|
|
|
| постоянный участник
|
Пост N: 474
Зарегистрирован: 09.10.06
|
|
Отправлено: 11.08.08 17:42. Заголовок: gustow пишет: Нужны..
gustow пишет: цитата: | Нужны ли мои "добавки" - например, скриншоты |
| Нужны, и примеры нужны. Справка MiniGUI уж очень спартанская. цитата: | что-то никто из "умеющих писать" почему-то до сих пор не "отважился" - что, кстати, скажется и на кол-ве желающих попользоваться МиниГУИ... да и Харбором как таковым [а зачем тогда Григорий со товарищи всё это "лудят"?? |
| Это к Григорию, особенно вторая часть вопроса. По первой позволю себе заметить, что грамотно написать документацию может не каждый программист. gustow пишет: цитата: | Да! еще напоследок (опять же без желания "открывать дискуссию") - в приведенном Петром примере имеется три процедуры с РАЗНЫМИ именами... Петр, просто из теоретического интереса попробуйте |
| Боюсь дискуссии не получится Да действительно обьявить две функции с одинаковыми именами (и не только Main) не получится. Но ведь я об этом и не говорил: если вы описываете Main - вы должны обязательно упомянуть _AppMain и ключ компилятора -n, хотя это к MiniGUI и никакого отношения не имеет.
|
|
|
|
| постоянный участник
|
Пост N: 43
Зарегистрирован: 06.02.07
|
|
Отправлено: 12.08.08 00:18. Заголовок: Понял. Напишу, как п..
Понял. Напишу, как получится. "Кто любит более тебя - напишет более меня" :)
|
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 17.08.08 07:48. Заголовок: gustow пишет: Понял..
|
|
|
|
| постоянный участник
|
Пост N: 645
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.08.08 10:04. Заголовок: Dima пишет: Где взя..
Dima пишет: цитата: | Где взять доку по WINAPI на русском ? |
| Могу выслать на ящик.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 18.08.08 10:28. Заголовок: Andrey пишет: Могу ..
Andrey пишет: Благодарность не будет знать границ .... :)))) mkizev////mail.ru
|
|
|
|
| |
Пост N: 867
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.08.08 11:12. Заголовок: Andrey пишет: Могу ..
Andrey пишет: Буду ждать тёрк-тёрк////тёрк.ru ;)
|
|
|
|
| постоянный участник
|
Пост N: 646
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.08.08 16:24. Заголовок: Dima А кинь пожалу..
Dima А кинь пожалуйста примером который ты сделал на чистом хХарборе !
|
|
|
|
| |
Пост N: 868
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.08.08 10:06. Заголовок: Andrey пишет: А кин..
Andrey пишет: цитата: | А кинь пожалуйста примером который ты сделал на чистом хХарборе ! |
| Примером чего Андрей ?
|
|
|
|
| постоянный участник
|
Пост N: 647
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.08 10:20. Заголовок: Dima пишет: Примеро..
Dima пишет: Примером: "Как запретить запуск одной проги несколько раз ?" или ты его не сделал ?
|
|
|
|
| |
Пост N: 869
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.08.08 11:05. Заголовок: if isexerunnin..
цитата: | Proc Main if isexerunning("test") ? "Прога уже запущена" quit endif return nil #pragma BEGINDUMP #include <windows.h> #include <hbapi.h> #include <shlobj.h> HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult { HANDLE hMutex = CreateMutex( NULL, TRUE, (LPTSTR) hb_parc(1) ); hb_retl( GetLastError() == ERROR_ALREADY_EXISTS ); ReleaseMutex( hMutex ); } #pragma ENDDUMP |
|
|
|
|
|
| постоянный участник
|
Пост N: 648
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.08 12:28. Заголовок: Спасибо Дима ! :sm3..
Спасибо Дима ! А как автоматически определять имя проги ? Если она будет не "test" ?
|
|
|
|
| |
Пост N: 870
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.08.08 12:43. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как автоматически определять имя проги ? Если она будет не "test" ? |
| Ну ты ведь знаешь заранее как ты обзовешь EXE шник ;) Хотя возможно есть такая функция в CT EXENAME()
|
|
|
|
|
| |
Пост N: 871
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.08.08 12:44. Заголовок: Andrey По ходу в пр..
Andrey По ходу в присланной тобой докуметации я так и не нашел функции CreateMutex()
|
|
|
|
| постоянный участник
|
Пост N: 649
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.08 23:05. Заголовок: А что это за функция..
А что это за функция ? Что ты хочешь сделать ?
|
|
|
|
| постоянный участник
|
Пост N: 654
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.09.08 13:21. Заголовок: Сделал прогу, только..
Сделал прогу, только не могу поднять "запущенную ранее программу" ! Как получить "хендл" запущенной ранее программы ? =========================================================== #define MYPROGRAM " Программа проверки запуска ! " Procedure Main LOCAL nI:=0, nKey, hWnd := GetForegroundWindow() LOCAL cNameWin, cExeRun := SUBSTR(EXENAME(), RAT("\",EXENAME())+1 ) IF hb_gt_version() == "WVT" // Если используется граф.терминал GTWVT.LIB cNameWin := HB_OEMTOANSI( MYPROGRAM ) ELSE cNameWin := MYPROGRAM ENDIF GTInfo( 26, cNameWin ) SETCOLOR("15/2") CLEAR SCREEN ? "Номер окна:", hWnd ? "Имя ЕХЕ-файла: ", cExeRun if isexerunning(cExeRun) ALERT("Прога уже запущена !") // Как сделать переключение на ренее запущенную программу ? MAXIMIZE( hWnd ) // - не работает tone(400,2) quit endif DO WHILE .T. nKey := INKEY(1) IF nKey == 27 // K_ESC EXIT ENDIF @ 4,2 SAY "ESC-выход Режим ожидания:" ?? nI++ ENDDO return #pragma BEGINDUMP #include <windows.h> #include <hbapi.h> #include <shlobj.h> HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult HANDLE hMutex = CreateMutex( NULL, TRUE, (LPTSTR) hb_parc(1) ); hb_retl( GetLastError() == ERROR_ALREADY_EXISTS ); ReleaseMutex( hMutex ); HB_FUNC( GETFOREGROUNDWINDOW ) hb_retnl( (LONG) GetForegroundWindow() ); HB_FUNC( MINIMIZE ) ShowWindow( (HWND) hb_parnl(1), SW_MINIMIZE ); HB_FUNC( MAXIMIZE ) ShowWindow( (HWND) hb_parnl(1), SW_RESTORE ); #pragma ENDDUMP ==================================================
|
|
|
Ответов - 34
, стр:
1
2
All
[только новые]
|
|