Автор | Сообщение |
|
| постоянный участник
|
Пост N: 2434
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.11.12 20:07. Заголовок: Как вывести окно Word на передний план?
Проблема появилась на Word2010. До этого все нормально показывалось и сейчас показывает. Вот мой код: oWord := TOleAuto():New( "Word.Application" ) oDocs := oWord:Documents oDocs:Open( cFileDoc ) oActive := oWord:ActiveDocument oSelect := oWord:Selection oMarks := oActive:BookMarks oWord:Visible := .T. oWord:WindowState := 1 // Maximize oSelect:HomeKey(6) Что нужно сделать еще для Word2010 ?
|
|
|
Ответов - 24
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 2449
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.12.12 02:55. Заголовок: Таже самая проблема ..
Таже самая проблема (НУ НЕ ХОЧЕТ Word или Excel выводится на передний план) появилась и на связке Win8 + Word2003 ! Народ, подскажите как с этим бороться ? Каждый раз юзер должен искать Word на панели управления и тыкать на нем....
|
|
|
|
| |
Пост N: 150
Зарегистрирован: 17.06.10
|
|
Отправлено: 05.12.12 08:45. Заголовок: Есть такая API функц..
Есть такая API функция SetWindowPos. Можно ее пробнуть.
|
|
|
|
| постоянный участник
|
Пост N: 2451
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.12.12 11:11. Заголовок: fil пишет: Есть так..
fil пишет: цитата: | Есть такая API функция SetWindowPos. Можно ее пробнуть. |
| А как ? Дай пример пожалуйста....
|
|
|
|
| |
Пост N: 151
Зарегистрирован: 17.06.10
|
|
Отправлено: 05.12.12 14:15. Заголовок: Типа так: setwindowp..
Типа так: setwindowpos( oWord:hWnd, -1, 0, 0, 0, 0, 3 ) В харборе эта функция вроде есть.
|
|
|
|
| постоянный участник
|
Пост N: 2452
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.12.12 19:56. Заголовок: А как я определю ном..
А как я определю номер хенла окна "oWord:hWnd" ? Есть такая функция ?
|
|
|
|
| |
Пост N: 152
Зарегистрирован: 17.06.10
|
|
Отправлено: 05.12.12 23:00. Заголовок: можно через FindWind..
можно через FindWindow()
|
|
|
|
| постоянный участник
|
Пост N: 2712
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.03.13 00:37. Заголовок: Уважаемые ! Подскаж..
Уважаемые ! Подскажите как окно, которое появляется в WinWord-е при повторном открытии через OLE-объект: вывести на передний план ? А то WORD 2 раза открывается и висит, ждет пока пользователь достанет это малюсенькое окно из под всех открытых задач на экране... Юзера достали.... Помогите....
|
|
|
|
| |
Пост N: 30
Зарегистрирован: 24.02.11
|
|
Отправлено: 01.03.13 07:37. Заголовок: Есть предположение, ..
Есть предположение, что дело тут в самой Винде. У меня на семерке регулярно такая беда случается, причем не с харборовскими программами и не обязательно с Word-oм. Например, при установке какой-нибудь программы новые окошки не выводятся на передний план, как должно бы быть, а тырятся где-то на заднем плане. Возможно, где-то что-то в настройках винды надо подправить. Подробно этим не занимался, бо не припекло.
|
|
|
|
| |
Пост N: 35
Зарегистрирован: 07.06.08
|
|
Отправлено: 01.03.13 09:03. Заголовок: При установке програ..
При установке программы лечится использованием использованием более поздней версией инсталлятора, если программа установки собрана на инсталляторе под ХР, то ничего не сделаеш. Нам пришлось поменять версию инсталлятора и после этого программа установки начала работать правильно. Либо MS Word под ХР, либо Harbour не допилен под семерку.
|
|
|
|
| постоянный участник
|
Пост N: 144
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.03.13 09:27. Заголовок: Andrey пишет:Юзера д..
Andrey пишет: цитата: | Юзера достали.... Помогите.... |
| Похожая ситуация была при временном использовании trial DoPdf.exe 7-ой версии. Там было два окна запроса: 1. Title окна "doPDF - Save PDF" file и кнопки Ok, Cancel 2. Title окна "Save" и кнопки Yes, No Чтобы юзера не доставали, решил через AutoIt3 - ловит появление окна и нажимает кнопку Ok или Yes соответственно. Код AutiIt3: Скрытый текст
#NoTrayIcon Opt("TrayMenuMode" , 1) $proc = @ScriptName ; process name $capt = $proc & " started" If WinExists($capt) Then ; уже запущен $pidp = ProcessExists($proc) If $pidp Then WinClose($capt) Exit EndIf EndIf AutoItWinSetTitle($capt) ; set caption $pcap = "doPDF - Save PDF file" ; caption doPdf7 (print window) $idok = 1437 ; ID control button OK. вариант 1. $okid = "[CLASS:Button;INSTANCE:9]" ; ID control button OK. вариант 2. $scap = "Save" ; caption window Save $id_s = 1629 ; ID control button Yes. вариант 1. $s_id = "[CLASS:Button;INSTANCE:2]" ; ID control button Yes. вариант 2. $step = 1000 ; OnTimer millisec. $exit_item = TrayCreateItem("Exit",-1, 0, -1) TraySetState() TraySetToolTip($capt) AdlibRegister( "MonitorStop" , $step ) ; OnTimer set While 1 $msg = TrayGetMsg() Select Case $msg = 0 ContinueLoop Case $msg = $exit_item ExitLoop EndSelect WEnd Exit Func MonitorStop() If WinExists($pcap, "") Then AdlibUnRegister() ; OnTimer stop ControlClick($pcap, "", $idok) ; или ControlClick($capt, "", $okid) IF WinWaitActive($scap, "", $step) Then ControlClick( $scap, "", $id_s) ; Yes window Save EndIf AdlibRegister( "MonitorStop" , $step ) ; OnTimer set EndIf EndFunc
| Может Гуру помогут решить аналогичную задачу под hb.
|
|
|
|
| |
Пост N: 163
Зарегистрирован: 17.06.10
|
|
Отправлено: 01.03.13 22:24. Заголовок: А что, незя найти хе..
А что, незя найти хендл этого окна ? А дале как обычно: setwindowpos( ЭтоОкно:hWnd, -1, 0, 0, 0, 0, 3 )
|
|
|
|
|
| постоянный участник
|
Пост N: 2717
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.03.13 23:16. Заголовок: fil пишет: А что, н..
fil пишет: цитата: | А что, незя найти хендл этого окна ? |
| Подскажи пожалуйста, как найти окно WORD'а с открытым файлом ? Я тут несколько экспериментов провел, разные вот варианты: для 2003 - "09-01326 - MICROSOFT WORD", "TEST26 - MICROSOFT WORD" для 2007 - "13-00385 [Режим ограниченной функциональности] - MICROSOFT WORD" Есть ли какое правило для создания имени ОКОН ? fil пишет: цитата: | setwindowpos( ЭтоОкно:hWnd, -1, 0, 0, 0, 0, 3 ) |
| А как в хХарборе использовать это ? Такой функции нет в нем ! Хотя можно наверно использовать из МиниГуи - MAXIMIZE( hWnd )....
|
|
|
|
| |
Пост N: 164
Зарегистрирован: 17.06.10
|
|
Отправлено: 01.03.13 23:28. Заголовок: Ну я же писал (выше)..
Ну я же писал (выше) - через findwindow. И findwindow и setwindowpos это API-шные функции.
|
|
|
|
| постоянный участник
|
Пост N: 2718
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.03.13 23:34. Заголовок: fil пишет: setwindo..
fil пишет: цитата: | setwindowpos это API-шные функции. |
| findwindow - выдрал из МиниГУи, да и остальное тоже. Вот набросал небольшую программку, работает... Что там в ней подправить нужно, чтобы не сбоила ? Скрытый текст FUNCTION MAIN(cTitle) //LOCAL cTitle := "12-00104 - MICROSOFT WORD" LOCAL hWnd, nI hWnd := FindWindow( cTitle ) ? "Hendle windows ["+cTitle+"] =",hWnd IF hWnd > 0 ? "Windows ["+cTitle+"] found !" wait // Display selected file MAXIMIZE( hWnd ) ENDIF wait RETURN NIL #pragma BEGINDUMP #include <windows.h> #include <hbapi.h> #include <shlobj.h> #define VM_CLOSE 16 HB_FUNC ( FINDWINDOW ) { hb_retnl( ( LONG ) FindWindow( 0, hb_parc( 1 ) ) ); } HB_FUNC( MINIMIZE ) { ShowWindow( (HWND) hb_parnl(1), SW_MINIMIZE ); } HB_FUNC( MAXIMIZE ) { ShowWindow( (HWND) hb_parnl(1), SW_RESTORE ); } HB_FUNC( HIDE ) { ShowWindow( (HWND) hb_parnl(1), SW_HIDE ); } HB_FUNC( SSHOW ) { ShowWindow( (HWND) hb_parnl(1), SW_SHOW ); } HB_FUNC( KKILL ) { SendMessage( (HWND) hb_parnl(1), VM_CLOSE,0,0); //DestroyWindow( (HWND) hb_parnl(1), VM_CLOSE); } #pragma ENDDUMP
| Есть ли какое правило для создания имени ОКОН ? И можно ли искать окно по маске (допустим WORD) ? А то при переборе списка окон ТОРМОЗА начинаются... По 15-20 минут перебираются окна... Кто не верит смотрите - http://clipper.borda.ru/?1-4-20-00000637-000-0-0-1353747644
|
|
|
|
| |
Пост N: 165
Зарегистрирован: 17.06.10
|
|
Отправлено: 01.03.13 23:38. Заголовок: 1. Что имеется в вид..
1. Что имеется в виду под "не сбоила" ? 2. Что значит имя окна ?
|
|
|
|
| постоянный участник
|
Пост N: 2719
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.03.13 23:43. Заголовок: fil пишет: 1. Что и..
fil пишет: цитата: | 1. Что имеется в виду под "не сбоила" ? |
| Ну не знаю, я с API не работал, может еще чего надо вызывать... fil пишет: Вот обнаружил для 2007 - "13-00385 [Режим ограниченной функциональности] - MICROSOFT WORD" т.е. нужно делать поиск 2х окон: 1) "13-00385 [Режим ограниченной функциональности] - MICROSOFT WORD" 2) "13-00385 - MICROSOFT WORD" А еще варианты могут быть ?
|
|
|
|
| |
Пост N: 166
Зарегистрирован: 17.06.10
|
|
Отправлено: 01.03.13 23:53. Заголовок: Можно перебрать окна..
Можно перебрать окна через EnumChildWindows (если есть. Или API) Можно перебрать дочерние окна десктопа. Смотреть их заголовки на тему WORD
|
|
|
|
| постоянный участник
|
Пост N: 2720
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.03.13 20:52. Заголовок: С этим вроде разобра..
С этим вроде разобрались. Теперь другая непонятка. Если файл *.DOC битый, ну что-то в нем сбойнуло, то при прямом открытие через ПРОВОДНИК сам Word выдает ошибку: А через вызов через OLE - не выдает ошибку, где то в памяти невидимый сидит и молчит ! А юзера в панику... Как открывать WORD сразу видимым ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 02.03.13 21:06. Заголовок: Если файл *.DOC битый...
На картинке имя файла вообще-то не *.DOC, а RTF Зачем тогда Вам нужен этот плохо управляемый Word 2010? Открывайте rtf своей компонентой и no problem
|
|
|
|
| постоянный участник
|
Пост N: 2721
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.03.13 21:41. Заголовок: petr707 пишет: Заче..
petr707 пишет: цитата: | Зачем тогда Вам нужен этот плохо управляемый Word 2010? |
| Все на нем сидят ! Я им что правила свои диктовать буду ?
|
|
|
|
| |
Пост N: 167
Зарегистрирован: 17.06.10
|
|
Отправлено: 02.03.13 23:16. Заголовок: A видимость для word..
A видимость для word'a, перед загрузкой файла, случаем не фалсе ? oWrd:Visible:= .F.
|
|
|
|
|
| постоянный участник
|
Пост N: 2722
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.13 08:24. Заголовок: fil пишет: A видимо..
fil пишет: цитата: | A видимость для word'a, перед загрузкой файла, случаем не фалсе ? |
| Нет ! В самом начале темы я привел свой код, синеньким цветом... oWord:Visible := .T. Может там что добавить нужно ? И еще сделал добавление в функцию: HB_FUNC( MAXIMIZE ) { ShowWindow( (HWND) hb_parnl(1), SW_RESTORE ); ShowWindow( (HWND) hb_parnl(1), SW_MAXIMIZE ); }
|
|
|
|
| |
Пост N: 168
Зарегистрирован: 17.06.10
|
|
Отправлено: 03.03.13 10:35. Заголовок: Синенький текст я ви..
Синенький текст я видел. Там oWord:Visible := .T. устанавливается после открытия файла, а желательно перед. Возможно стоит сначала вывести Word на экран, а потом открывать файл
|
|
|
|
| постоянный участник
|
Пост N: 2723
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.13 13:40. Заголовок: Т.е. ставлю сразу за..
Т.е. ставлю сразу за oWord := TOleAuto():New( "Word.Application" ) ?
|
|
|
Ответов - 24
, стр:
1
2
All
[только новые]
|
|