Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Опять Word Добавлено: 13.02.11 16:00  

Автор вопроса:  Dan | ICQ: 609276007 
Темка была: http://www.vbnet.ru/forum/show.aspx?id=207105
если ворд не открыт прога не работает
Как сделать что, если ворд не открыт не выполнять код?
спасибо

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #1 Добавлено: 19.02.11 09:19
Перебери открытые приложения, с поиском по имени (API розрыть прийдется)

Ответить

Номер ответа: 2
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #2 Добавлено: 19.02.11 09:36
http://www.rusedu.ru/detail_828.html тут справочник валялся

Ответить

Номер ответа: 3
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #3 Добавлено: 19.02.11 09:42
напрмиер GetNextWindow
Declare Function GetWindowText Lib "user32.dll" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 19.02.11 12:30
SHDZ пишет:
Перебери открытые приложения, с поиском по имени

А то, что у ворда имена могут быть разные, а так же возможно наличие не-вордовских окон с текстом "...word..." тебя не смущает?

SHDZ пишет:
http://www.rusedu.ru/detail_828.html тут справочник валялся
почему бы не MSDN?


SHDZ пишет:
напрмиер GetNextWindow

И как с помощью этой функции гарантированно определить наличие или отсутствие запущенного ворда?

Ответить

Номер ответа: 5
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #5
Добавлено: 19.02.11 14:17
http://www.vbnet.ru/forum/show.aspx?id=214154

Ответить

Номер ответа: 6
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #6 Добавлено: 19.02.11 16:11
Пример на шарпе, на VB6 чуть переделать нужно
  1.  
  2. #region Поиск окна
  3.         [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
  4.         private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  5.         //static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
  6.         [DllImport("user32.dll", SetLastError = true)]
  7.         static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
  8.         #endregion
  9.  
  10.  
  11.         /// <summary>
  12.         /// True - найдено, False - не найдено
  13.         /// </summary>
  14.         /// <returns></returns>
  15.         public static int FindProcess()
  16.         {
  17.             //HWND = FindWindow("calc.exe", null);
  18.             HWND = FindWindow(null, _FindProgramm);
  19.             if ((HWND == null) || ((Int32)HWND == 0))
  20.                 HWND = FindWindow(null, _FindProgramm + ".exe");
  21.             if ((HWND == null) || ((Int32)HWND == 0))
  22.                 HWND = FindWindow(_FindProgramm, null);
  23.             if ((HWND == null) || ((Int32)HWND == 0))
  24.             {
  25.                 foreach (Process p in Process.GetProcesses())
  26.                 {
  27.                     if (p.ProcessName == _FindProgramm)
  28.                         HWND = FindWindow(null, p.MainWindowTitle);
  29.                     //HWND = p.Handle;
  30.                 }
  31.             }
  32.             if ((HWND != null) && ((Int32)HWND != 0))
  33.             {
  34.                 // Проверяем - смогли ли мы определить местоположение окна и размеры
  35.                 return GetPlacement();
  36.             }
  37.             else
  38.                 return 1111;
  39.  

Ответить

Номер ответа: 7
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #7 Добавлено: 19.02.11 16:13
Функция GetPlacement() тебе не нужна, это я уже с окном работал

Ответить

Номер ответа: 8
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #8 Добавлено: 19.02.11 16:16
Да сорри за неточность _FindProgramm = это как раз искомое имя в твоем случае _FindProgramm = "WINWORD.exe"

Ответить

Номер ответа: 9
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #9 Добавлено: 19.02.11 16:28
Проверил - все работает и находит процесс, тока имя задавай "WINWORD", где вордовские документы любые - не зависимо от имени файла

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам