Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 3

Зачем изобретать велосипед?

20.04.2014, 19:25. Показов 1422. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как написать код, который бы открывал программу (что-то типа калькулятора), вводил нужные нам данные в окно ввода, заставлял программу производить вычисления, и забирал(копировал) данные из окна в котором выводится ответ вычислений? Может что-то подобное уже где-то обсуждалось, буду благодарен ссылке на это.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2014, 19:25
Ответы с готовыми решениями:

Где найти описание классов чтобы велосипед не изобретать
Где найти описание классов чтобы велосипед не изобретатью Буду очень признателен!)

Эффективно ли "изобретать велосипед" при написании программ?
здравствуйте господа. Короче такай вопрос. У нас профша, яве так учит: Допустим есть метод add(Object x), для Коллекций. Все знают, ну вот...

Массивы: найти моду, стоит ли изобретать колесо!?
Здравствуйте уважаемые программисты! Начал изучение массивов. Столкнулся с темой нахождение моды(наиболее часто повторяющегося значения в...

4
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
20.04.2014, 21:11
В сборнике программ есть код, что то подобное
Примеры программ на PureBasic

Сам код
PureBasic
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
; Автор kvitaliy
; [url]http://purebasic.info/phpBB2/viewtopic.php?t=1580[/url]
 
Global hwndCalc 
 Calc=RunProgram("calc.exe","","",#PB_Program_Open|#PB_Program_Hide) ;Открываем калькулятор 
 ;Calc = WinExec_("calc.exe", #SW_HIDE ) ; альтернатива на API 
 Repeat 
   hwndCalc=FindWindow_("SciCalc", #Null); Вычисляем хендл калькулятора 
     Delay (100) 
   x+1 
 Until hwndCalc>0 Or x>200 
 If x>200: End:EndIf 
 
 ShowWindow_(hwndCalc,#SW_HIDE) 
 
  ; Копирует в буфер обмена число из калькулятора 
 Procedure CopyClip() 
   hMenu = GetMenu_(hwndCalc) 
   nMenuID = GetMenuItemID_(hMenu, 0) 
   SendMessage_(nMenuID , #WM_COMMAND,300 , #Null) 
 EndProcedure 
 
 ; Процедура которая посылает команды на нужные клавиши калькулятора 
  Procedure.s SendCOMMAND(Command$) 
    ; Все команды вычислены при помощи Microsoft Spy++ 
   Define Command.i 
   Select Command$ 
     Case "0" 
       Command=124 
     Case "1" 
       Command=125 
     Case "2" 
       Command=126 
     Case "3" 
       Command=127 
     Case "4" 
       Command=128 
     Case "5" 
       Command=129 
     Case "6" 
       Command=130 
     Case "7" 
       Command=131 
     Case "8" 
       Command=132 
     Case "9" 
       Command=133 
     Case "+" 
       Command=92 
     Case "-" 
       Command=93 
     Case "*" 
       Command=91 
     Case "/","\" ; знак деления любой 
       Command=90 
     Case "C","c" ; Очистить 
       Command=81 
     Case ".","," ; разделитель точка или запятая 
       Command=85 
     Case "(" 
         Command=122 
     Case ")" 
         Command=123 
     Case "P","p" ; число Pi 
         Command=111 
     Case "^"       ; это возведение в степень 
       Command=95        
     Case "-" 
       Command=80        
     Case "=" 
       Command=112 
       SendMessage_(hwndCalc, #WM_COMMAND, Command, 0) 
       CopyClip() 
       ProcedureReturn GetClipboardText() 
       
     Default 
       ProcedureReturn "" 
   EndSelect 
    SendMessage_(hwndCalc, #WM_COMMAND, Command, 0)      
     
  EndProcedure 
   
  Procedure.s Calculate(a$) 
    For r=1 To Len(a$) 
        Resultat$= SendCOMMAND(Mid(a$,r,1)) 
    Next 
 If Resultat$ 
 ProcedureReturn Resultat$ 
 EndIf 
 
 EndProcedure 
 
 ; Проверяем работу 
 ; В строке могут быть любые символы - обрабатываются только валидные 
 ; к примеру можно написать " скока буит 2 + 2 ? =" 
 ; ответ будет правильным и ошибки не возникнет. 
 ; Внимание! Если хотите увидеть ответ, то строка должна ОБЯЗАТЕЛЬНО заканчиватся знаком = 
 
 Debug Calculate("23*2+11=") 
 Delay(200) 
 Calculate("C") 
 Debug Calculate("23^2+15=") 
 Calculate("C") 
 Delay(200) 
 Debug Calculate("23-(2+15)=") 
 Delay(200) 
 Debug Calculate(" скока буит 2 + 2 ? =") 
 
 ; Закрываем калькулятор обязательно ! Он не видим, но в памяти висит. 
 
  KillProgram(Calc) 
  CloseProgram(Calc) 
 ;PostMessage_(hwndCalc,#WM_CLOSE,0,0)  ; Для сторонников API
Может на современных ОС не будет работать, не проверял.
2
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 3
21.04.2014, 17:59  [ТС]
Благодарю за столь скорую помощь, но мой мозг не позволил мне понять суть, несмотря на подробные пояснения. В программировании я новичок и мои знания ограничиваются не полностью переведенным учебником по PB и серией видео уроков для начинающих. Многие из команд я не смог отыскать в русскоязычной справке. Как я писал, программа производит расчеты (конечно более сложные чем калькулятор) и имеет несколько окон для ввода, и для вывода результатов. Мне кажется лучшим решением моей задачи было бы создание эмулятора мыши и клавиатуры. То есть мы запускаем программу, потом делим экран на определенные сектора (например 1000 по горизонтали и вертикали), задаем команду ставящую мышь в нужное положение, задаем команду заставляющую сделать клик левой кнопкой мыши, задаем команду заставляющую клавиатуру ввести нужные нам символы. После повторяем все задав координаты другого окна и т.д. Потом, когда программа произвела свои вычисления, наводим мышь на окно с результатом, заставляем ее зажать левую кнопку и чуть сместиться, тем самым выделив текст, потом эмулируем на клавиатуре CTRL+C и скопированное число (результатом будет число) задаем какой-нибудь новой переменной, чтобы далее можно было с ней работать. Расположение окон в нашей системе координат можно вычислить подбором. В общем, хотелось бы написать что-то подобное. Наверно мало кто захочет писать программу, но мне будет достаточно перечисления тех команд, без которых мне не обойтись, которые обязательно нужны. Возможно найдутся обучающие материалы с использованием этих программ. Заранее всем большое спасибо!
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
21.04.2014, 19:51
Лучший ответ Сообщение было отмечено Anderaka как решение

Решение

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SetCursorPos_(100,100) ; Курсор в координату 100,100
 
mouse_event_(#MOUSEEVENTF_LEFTDOWN,0,0,0,0); Нажимаем на левую клавишу мыши
    Sleep_(10); Пауза 
mouse_event_(#MOUSEEVENTF_LEFTUP,0,0,0,0); Отпускаем левую клавишу мыши 
 
; Выделить весь текст ( послать клавиши Ctrl+A)
Delay(200)
keybd_event_(#VK_CONTROL,0,0,0)
keybd_event_(#VK_A,0,0,0)
 Delay(200)
keybd_event_(#VK_A,0,#KEYEVENTF_KEYUP,0)
keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0)
  Delay(200)    
 
; Копировать этот текст в буфер и вставка в текстовое окно
keybd_event_(#VK_CONTROL,0,0,0)
keybd_event_(#VK_C,0,0,0)
Delay(200)
keybd_event_(#VK_C,0,#KEYEVENTF_KEYUP,0)
keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0)
TextMess$ = GetClipboardText()
SetGadgetText(#String_0,TextMess$)
Вроде всё, что надо?

Добавлено через 6 минут
Цитата Сообщение от Anderaka Посмотреть сообщение
Расположение окон в нашей системе координат можно вычислить подбором.
БОНУС! Зачем подбор, можно простым кодом
PureBasic
1
2
3
4
5
6
7
Dim P.POINT(1)
Repeat
GetCursorPos_(P(0)) 
Debug P(0)\X
Debug p(0)\Y
Delay(100)
ForEver
2
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 3
21.04.2014, 19:53  [ТС]
Круто, буду разбираться. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2014, 19:53
Помогаю со студенческими работами здесь

Зачем в .NET в 2014 г. строгая типизация? Зачем нужно писать Convert.ToInt32(), ToString(), Int32.Parse()?
По поводу преобразования. Современный препроцессор кода сам определяет, что куда преобразовывать. Если в функцию, принимающую строку,...

Велосипед
составит программу, рисующая велосипед

Мой велосипед
Предлагаю в этой теме хвастаться своими байками. И не забывайте оставлять свои отзывы. Я начну: Wheeler PRO 09 (2008) Рама:...

Велосипед с мотором
Всем привет) Вчера натнулся на несколько вот таких девайсов: pSngBqZd9VA&feature Aw9jm9W42-A&feature ...

мой велосипед не едет.
Здрасте. Решил запилить управление 8-сегментным 4-разрядным дисплеем с общим анодом, четырмя ножками контроллера. Набросал в протеусе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru