|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Здравствуйте! Вопрос следующий: имеется ли возможность из под WIN98 - WINXP с помощью функций API (или другим способом) из всех запущенных приложений выделить только те, которые работают под DOS-ом. Окна с этими приложениями надо сворачивать в пиктограмму, а затем разворачивать. Пытаюсь это сделать через дескрипторы виндовых окон - получается плохо. Может кто подскажет более лучшее решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 12:39 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
DOS задачи выполняются под процессом NTVDM.EXE (только под 2000/XP), смотри привязку окна к процессу. Поспрошай в форуме по С++. Работа с WinAPI им лучше известна. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 13:03 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Если можно, поточнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 13:31 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Опишите задачу, которую пытаетесь решить, что-то мне кажется, что есть более простой способ её решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 13:52 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
UNPЕсли можно, поточнее... Искать некогда, если память не изменяет, то по окну можно узнать поток, к которому оно привязано, по потоку процесс, по процессу смотришь какой EXE его запустил. Если NTVDM.EXE (это виртуальная DOS-машина) то значит прога ДОСавая. Но это только для 2000/XP так. Может есть другие признаки, не знаю, редко с WinAPI работаю. Я бы посоветовал это на Си написать и в DLL/FLL обернуть. Там много работы со структурами, а из фокса тяжело со структурами работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 14:45 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Задача следующая: из DOS-приложения запускается WIN-приложение. В момент запуска, DOS-приложение должно быть свернуто. После завершения WIN-приложения, DOS-приложение должно быть развернуто. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 14:47 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
UNPЗадача следующая: из DOS-приложения запускается WIN-приложение. В момент запуска, DOS-приложение должно быть свернуто. После завершения WIN-приложения, DOS-приложение должно быть развернуто. Так бы сразу и сказал. Сделай помежуточное консольное приложение на Си, которое вызовет твое WIN-приложение. У меня так из полноэкранного дос окна работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 14:59 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Дима! Приложения на разных языках, Поэтому из WIN-приложения мне надо определить все запущенные DOS-ие приложения и свернуть их окна, а затем, при завершении WIN-приложения, восстановить свернутые окна. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 16:08 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
UNPДима! Приложения на разных языках, Поэтому из WIN-приложения мне надо определить все запущенные DOS-ие приложения и свернуть их окна, а затем, при завершении WIN-приложения, восстановить свернутые окна. Дос прога запускает "переходник" (заготовку исходника на Си я привел). Переходник - это консольное Win-приложение, т.е. при запуске ОС дает ему окно ДОС-приложения, потом он запускает твое Win-приложение, ждет пока оно отработает, после разворачивает свое окно и завершается. А так как он в окне дос-проги, то дос прога оказывается обратно развернутой. Консольное приложение на фоксе не сделать, я на MS VC++ делаю. У меня так библиотека сбербанка для расчетов по картам из кассовой проги (в полноэкранном режиме) на FPD вызывается. Работа с Win-драйвером фискального регистратора через COM тоже через консольную прогу из доса. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 16:18 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
И еще сворачивание ДОС-окна: Код: plaintext 1.
Поизучай сказанное. Если не разберешься пиши завтра к вечеру. Время будет слеплю тебе прогу которая сворачивает свое окно, запускает другую (переданную как параметр), ждет завершения и разворачивает окно обратно. Не заметил. GetConsoleHwnd() не WinAPI функция. Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2008, 16:27 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Дима! Приложение на VFP9 я вызываю из FPD2 и для чего переходник на СИ? DOS-ское окно с приложением сворачивается и разворачивается нормально если оно в оконном режиме. Проблемы начинаются, если изначально DOS-ское окно полностью развёрнуто. В этом случае в первый раз его нужно свернуть с клавиатуры (только после этого формируется нормальный дескриптор окна). При последующих вызовах VFP9, DOS-ское окно сворачивается нормально, но при завершении работы приложения VFP9, DOS-ское окно не могу развернуть, хотя знаю его дескриптор. И ещё, уточните, что Вы понимаете под консольным WIN приложением. Ниже программный код: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ****** Сначала сворачиваем все окна с DOS режимом. После завершения программы ****** восстанавливаем их первоначальный размер DECLARE Integer GetTopWindow IN Win32API Integer nHwndTop DECLARE Integer GetWindow IN Win32API Integer nHwndOrig, Integer nRelFlag DECLARE Integer GetWindowText IN Win32API Integer nHwnd, String cTextBuff, Integer nMaxCountBuff DECLARE INTEGER CloseWindow IN Win32API INTEGER hWnd DECLARE INTEGER OpenIcon IN Win32API INTEGER hWnd DECLARE INTEGER ShowWindow IN user32 INTEGER hwnd, INTEGER nCmdShow DECLARE INTEGER SetWindowText IN user32 INTEGER hWnd, STRING lpString LOCAL lcTextBuffer, lnHwndChild lcTextBuffer = SPACE (100) &&Пустая строка lnHwndChild = GetTopWindow (0) &&Получить указатель активного окна lnHwndChild = GetWindow (lnHwndChild, 0) &&Получить указатель активного окна *** Свернуть все окна с DOS режимом DO WHILE lnHwndChild # 0 && Просмотреть все окна lcTextBuffer = SPACE (100) && Пустая строка GetWindowText (lnHwndChild, @lcTextBuffer, 100) && Получить строку заголовка окна lcTextBuffer = ALLTRIM (lcTextBuffer) IF "cmd.exe" $ lcTextBuffer && В заголовке окна вызова режима DOS есть такая подстрока CloseWindow (lnHwndChild) && Свернуть окно с DOS ENDIF lnHwndChild = GetWindow (lnHwndChild, 2) && Получить дескриптер следующего окна ENDDO DO FORM WTK WITH cNameWinFile && Вызов приложения на VFP 9.0 READ EVENTS CLOSE DATABASES ALL *** Восстановить размеры всех окон с DOS режимом lnHwndChild = GetTopWindow (0) &&Получить указатель активного окна lnHwndChild = GetWindow (lnHwndChild, 0) DO WHILE lnHwndChild # 0 && Просмотреть все окна lcTextBuffer = SPACE (100) &&Пустая строка GetWindowText (lnHwndChild, @lcTextBuffer, 100) &&Получить Title окна lcTextBuffer = ALLTRIM (lcTextBuffer) IF "cmd.exe" $ lcTextBuffer && В заголовке окна вызова режима DOS есть такая подстрока * = OpenIcon (lnHwndChild) && Восстановить первоначальные размеры окна с DOS = ShowWindow(lnHwndChild, 9) ENDIF lnHwndChild = GetWindow (lnHwndChild, 2) && Получить дескриптер следующего окна ENDDO CLEAR DLLS && Закрываем функции API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2008, 09:48 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
DimaTПоизучай сказанное. Если не разберешься пиши завтра к вечеру. Время будет слеплю тебе прогу которая сворачивает свое окно, запускает другую (переданную как параметр), ждет завершения и разворачивает окно обратно. Дима и могли бы вы слепить такую программку, я лично был бы очень вам благодарен... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2008, 11:08 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
UNPИ ещё, уточните, что Вы понимаете под консольным WIN приложением. Что и все. Консольное приложение - это Win приложение без графического интерфейса с выводом в текстовую консоль (например FAR). Подробности в инете. Одна из особенностей работы консольных приложений - если одно вызывает второе, то второму ОС дает эту же консоль. На этом и построен мой пример. ValeraSHДима и могли бы вы слепить такую программку, я лично был бы очень вам благодарен... Сделаю. Если сегодня не успею то завтра выложу сюда ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2008, 16:42 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Все в архиве. Запускать из FPD: Код: plaintext
PS Исходники на MS VC6 там же ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2008, 17:33 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
DimaT, спасибо за программку - помогла. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2008, 15:00 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Дима! За программу спасибо - отличная. Только есть нюанс: Вашу программу вызываю из FPD (в полноэкранном режиме) несколько раз, при её вызове в первый раз, экран (с FPD) не сворачивается - приходится его свернуть ручками, при последующих вызывах всё работает (экран сворачивается и разворачивается) нормально. Как победить это? У меня: WIN XP SP2, FPD 2.0, VFP 9.0 SP2 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2008, 10:30 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Нету у меня такой проблемы Тест: Запускаю FoxPro.exe test.prg (FPD 2.6) В ярлыке поставил полноэкранный режим. XPHE SP2 Test.prg Код: plaintext 1. 2. 3.
нажимаю, окно FPD сворачивается, запускается блокнот. Блокнот закрываю, FPD открывается на весь экран. Попробуй как я написал проверить, на другом компе. Может в VFP коде что-нибудь осталось от твоего перебора окон. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2008, 10:54 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Дима! Большое спасибо. Все свои проблемы победил! С уважением UNP ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2008, 13:30 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Просьба к Dima T. Не могли бы Вы доработать свою утилиту RunWin, включив обработку еще одного параметра. Допустим : 1 - родительское окно сворачивается всегда (текущий режим работы утилиты) 2 - родительское окно не сворачивается, но разворачивается если в результате работы свернулось (нужно для запуска консольных win приложений, при запуске которых иногда окна fpd сворачиволось) 3 - (если возможно) родительское окно сворачивается если оно было полноэкранным, если нет , то = пар.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 09:11 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Boban52 - родительское окно не сворачивается, но разворачивается если в результате работы свернулось (нужно для запуска консольных win приложений, при запуске которых иногда окна fpd сворачиволось) Это добавлю Boban53 - (если возможно) родительское окно сворачивается если оно было полноэкранным, если нет , то = пар.2 Это пока не знаю. Если найду как проверить полноэкранный режим или окно, то добавлю. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 09:26 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Было бы неплохо... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 10:50 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Поправил. В архиве RunWin.exe и исходники. Командная строка такая 1. Как было. Свернулся - запустил RunWin.exe [PATH]\\Name.exe 2. Без минимизации окна RunWin.exe [PATH]\\Name.exe NOMIN 3. Без минимизации окна если в оконном режиме RunWin.exe [PATH]\\Name.exe NOMINWIN PS В третьем случае тип окна определяется только для 2000/XP. Для 95/98 решения не нашел, под 95/98 прога всегда считает что она в полноэкранном режиме. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 12:26 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Спасибо. Сейчас потестим... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 13:15 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Boban5Спасибо. Сейчас потестим... А можно добавить параметр управление параметрами окна запускаемых Win приложений (максимизировано, минимизировано) ? А то некоторые вьюверы придется распахивать вручную. P.S. Не спец в C. P.P.S. Аппетит приходи во время тестирования 8-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 16:21 |
|
DOS - WINDOWS - DOS
|
|||
---|---|---|---|
#18+
Boban5А можно добавить параметр управление параметрами окна запускаемых Win приложений (максимизировано, минимизировано) ? А то некоторые вьюверы придется распахивать вручную. Можно, только позже, пока некогда. Boban5P.S. Не спец в C. Может уже пора начинать осваивать потихоньку? PS Может пора уже думать как с FPD расстаться, а не навешивать на него всякую всячину? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2008, 13:07 |
|
|
start [/forum/topic.php?fid=41&msg=35449383&tid=1587383]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 468ms |
0 / 0 |