Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Подстановка значений в текстбоксы на Web-страницах Добавлено: 15.02.12 10:48  

Автор вопроса:  Дмитрий
Доброго времени суток.
Вопрос заключается в следующем: Имеется корпоративное приложение написаное на дотнете, стартовая страница которого содержит 2 текстбокса (логин и пароль) и кнопка (вход), нужно из моего приложения передать даные в текстбоксы и нажать кнопку. Как это сделать???

Ответить

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

Номер ответа: 1
Автор ответа:
 Дмитрий



Вопросов: 9
Ответов: 18
 Профиль | | #1 Добавлено: 15.02.12 10:50
Имена текстбоксов известны

Ответить

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



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #2 Добавлено: 16.02.12 12:48
Пример не нашел, а по памяти толкового не скажу, сначала в списке процессов по заголовку находишь нужный процесс,
потом берешь его и перебираешь нужные дочерние эл-ты пока не доберешься до нужных, запоминаешь и начинаешь жмакать.
Найти окно
  1.  
  2. using System.Diagnostics;
  3.  
  4. [DllImport("User32.dll")] private static extern Int32 SendMessage(int hWnd, int Msg, int wParam, int lParam);
  5.  
  6. int WM_KEYDOWN = 0x0100;
  7. int WM_KEYUP = 0x0101;
  8. int WM_CHAR = 0x0102;
  9. int VK_A = 0x41;
  10. Process[] processes = Process.GetProcessesByName("notepad");
  11. foreach (Process p in processes)
  12. {
  13. IntPtr pFoundWindow = p.MainWindowHandle;
  14.  
  15.  
  16. int j = SendMessage((int)pFoundWindow, WM_KEYDOWN, VK_A, 0);
  17.  
  18. }


SendMessage - это как раз жмакать кнопки, и прочее

Ответить

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



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #3 Добавлено: 16.02.12 12:49
ну тока
  1. int j = SendMessage((int)pFoundWindow, WM_KEYDOWN, VK_A, 0);

вытащи из foreach

Ответить

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



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #4 Добавлено: 16.02.12 13:13
Вот нарыл нормальный пример:
  1. private const int WM_GETTEXT = 0x000D;
  2. private const int WM_SETTEXT = 0x000C;
  3. private const int WM_GETTEXTLENGTH = 0x000E;
  4.  
  5. [DllImport("User32.dll")]
  6. public static extern Int32 SendMessage(
  7. IntPtr hWnd, // handle to destination window
  8. int Msg, // message
  9. IntPtr wParam, // first message parameter
  10. StringBuilder lParam);
  11.  
  12. [DllImport("User32.dll")]
  13. public static extern Int32 SendMessage(
  14. IntPtr hWnd, // handle to destination window
  15. int Msg, // message
  16. IntPtr wParam, // first message parameter
  17. IntPtr lParam); // second message parameter
  18.  
  19. string lpszParentClass = "WindowsForms10.Window.8.app.0.3b95145";
  20. string lpszParentWindow = "GetMessageForm";
  21. string lpszClass = "WindowsForms10.EDIT.app.0.3b95145";
  22. IntPtr ParenthWnd = new IntPtr(0);
  23. IntPtr EdithWnd = new IntPtr(0);
  24.  
  25. string text = "test";
  26.  
  27. ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);
  28. if (!ParenthWnd.Equals(IntPtr.Zero))
  29. {
  30.     EdithWnd = FindWindowEx(ParenthWnd, EdithWnd, lpszClass, "");
  31.     if (!EdithWnd.Equals(IntPtr.Zero))
  32.     {
  33.         int length = SendMessage(EdithWnd, WM_GETTEXTLENGTH, (IntPtr)0, (IntPtr)0);
  34.         if (length > 0)
  35.         {
  36.             StringBuilder sb = new StringBuilder(length);
  37.             int numChars = SendMessage(EdithWnd, WM_GETTEXT, (IntPtr)(length + 1), sb);
  38.             if (numChars > 0)
  39.             {
  40.                 sb.Append(text);
  41.                 SendMessage(EdithWnd, WM_SETTEXT, (IntPtr)0, sb);\
  42.             }
  43.         }
  44.         else
  45.             SendMessage(EdithWnd, WM_SETTEXT, (IntPtr)0, new StringBuilder(text));
  46.     }
  47.     else
  48.         MessageBox.Show("No child form found!");
  49. }
  50. else
  51.     MessageBox.Show("No parent form found!");

Ответить

Страница: 1 |

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



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