|
|
|
Вызов приложения VFP9.0 из FPD26 (DOS)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, коллеги! Если кто-либо сталкивался с такой проблемой, пожалуйста, подскажите как её решить. Есть приложение, написанное на FPD26 (DOS). Из него (в цикле) вызывается приложение на VFP9. При старте виндового приложения, окно с DOS приложением должно сворачиваться, а при завершении виндового приложения - окно с DOS приложением должно восстановить свой первоначальный размер. Если DOS-приложение запущено в оконном режиме, окна сворачиваются и разворачиваются нормально. Если DOS-приложение запущено в полно экранном режиме (размер DOS-окна во весь экран), то ПЕРВЫЙ РАЗ свернуть DOS-окно можно только с помощью клавиши <WIN> (на клавиатуре справа от <Ctrl>). Почему-то API-функции (см. пример) не видят его. При последующих вызовах DOS-окно сворачивается и разворачивается нормально. В чём у меня ошибка ? Вызов Windows-приложения из FPD26: . . . !D:\TK\TK.exe . . . Окна сворачиваю и разворачиваю следующим образом: . . . ****** Сначала сворачиваем все окна с 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 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 TK && Вызов приложения на 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 ENDIF lnHwndChild = GetWindow (lnHwndChild, 2) && Получить дескриптер следующего окна ENDDO CLEAR DLLS && Закрываем функции API . . . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 09:50 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34859028&tid=1588670]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
20ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 351ms |

| 0 / 0 |
