Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для sidapas
23 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 228

WinAPI

26.02.2011, 15:29. Показов 3728. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как сделать так чтобы программа открывала блокнот и открыла нужный текстовый файл и каждая буква текстового файла записывалась в блокнот заданный интервал времени?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.02.2011, 15:29
Ответы с готовыми решениями:

WinAPI
Как мне программно совершить эти действия,которые показаны на видео? http://video.yandex.ua/users/romanzi777/view/1/

winapi
РЕБЯТА,ПОМОГИТЕ пожалуйста со следующим: в программе нужно прописать коды клавиш(мне для примера достаточно одной) чтобы этот код выводился...

WinAPI
Подскажите плиз книгу какуюнить по WinAPI для полного,полного чайника:)

25
 Аватар для Darth_Vaider
58 / 57 / 28
Регистрация: 17.01.2011
Сообщений: 181
26.02.2011, 16:17
Ну, запускается блокнот с помощью функции shellexecute. Здесь лучше открывать сам блокнот, а не документ, который нужно загрузить. Тот документ нужно загрузить в твою программу. Потом ставь таймер и отправляй буквы в блокнот с помощью sendmessage.
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.02.2011, 16:19
запускаешь блокнот например через CreateProcess потом по таймеру посылаешь в него по букве из текстового файла используя SendMessage и сообщения WM_SETTEXT

Добавлено через 36 секунд
Darth_Vaider, опередил )
0
 Аватар для sidapas
23 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 228
27.02.2011, 12:17  [ТС]
блин я толком ничего понять не могу дайте код пожалуйста

Добавлено через 19 часов 46 минут
ну кто ни будь поможет
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
27.02.2011, 12:49
Delphi
1
2
3
4
5
6
7
8
var
H: HWND;
begin
  //Так откроется файл в блокноте если он по умолчанию
  H := ShellExecute (Form1.Handle, nil, 'c:\2.txt', nil, nil, SW_RESTORE);
  //Можно так если знаешь путь блокнота, может неполность нужно путь писать, в google найдешь
  H := ShellExecute (Form1.Handle, nil, PChar ('Путь'), nil, nil, SW_RESTORE)
end;
В итоге у тебя в H Handle ссылка на созданное окно.

Добавлено через 2 минуты
Дальше шлем строку
Delphi
1
SendMessage(h,WM_SETTEXT,0,lparam(PChar('А что собсно происходит то?')));
1
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 13:25
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, shellapi, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
 h, h1: hwnd;
 str: char;
 f: Textfile;
 str1: string;
implementation
 
{$R *.dfm}
// в инспекторе объектов ставим  Timer1.Enabled:= False;
procedure TForm1.Button1Click(Sender: TObject);
begin
 
 // открываем блокнот
 ShellExecute(Handle, 'open', 'notepad.exe', nil, nil, SW_RESTORE);
 sleep(200);// маленько тормознем
 h:= FindWindow('Notepad',nil);// находим дескриптор блокнота
 h1:= FindwindowEx(h, 0, 'Edit', nil);// находим дескриптор поля ввода блокнота - Edit
 if h1 <> 0 then // если найден дескриптор
  begin
  AssignFile(f, 'test.txt'); // открываем файл с текстом
  Reset(f);
  Timer1.Enabled:= True;//- врубаем таймер
  end;
 
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if not Eof(f) then   // если не конец файла
  begin
   read(f, str); // читаем символ
   str1:= str1 + str; // добавляем в строку
   SendMessage(H1, wm_settext, 0, lparam(string(str1))); //посылаем строку в блокнот
 
  end
  else 
   begin
    Timer1.Enabled:= False; //текст кончился - останавливаем таймер
    CloseFile(f);
   end;
end;
 
end.
1
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 13:32
на всякий случай - сам проект
Вложения
Тип файла: rar Новая папка (4).rar (303.7 Кб, 36 просмотров)
2
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 13:34
кстати в проекте я забыл файл закрыть - исправь там

Цитата Сообщение от igoriy Посмотреть сообщение
else
begin
Timer1.Enabled:= False; //текст кончился - останавливаем таймер
CloseFile(f);
end;
1
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
27.02.2011, 13:40
igoriy, а ты свой пример проверял?
просто я вчера начал делать, делал так же как ты
Delphi
1
2
  str1:= str1 + str; 
   SendMessage(H1, wm_settext, 0, lparam(string(str1)));
у меня получалось что как только символ отправлялся в блокнот переменная str1 обнулялась и получалось так что отправлялось по одному символу, а старое не сохранялось, не поняв в чем проблема, я так и бросил это дело )
1
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 13:49
да я обязательно перед отправкой проверяю - по началу у меня такая же проблема была как у тебя и поэтому я зделал вот это

Цитата Сообщение от igoriy Посмотреть сообщение
str1:= str1 + str; // добавляем в строку
Добавлено через 2 минуты
Правельней сказать - добавляем символ в строку

Добавлено через 4 минуты
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
SendMessage(h,WM_SETTEXT,0,lparam(PChar( 'А что собсно происходит то?')));
а вот в этом случае - надпись посылается заголовку

Добавлено через 49 секунд
дескриптор то окна а не поля ввода
1
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
27.02.2011, 13:56
у меня было аналогично str1:= str1 + str;
но когда второй раз доходил код до этого места str1 уже была пустой, т.е. не сохранялось то что мы присвоили до этого.
В отладчике посмотрел переменная обнулялась именно после строки отправки сообщения
SendMessage ......
Не понятно почему, плохо я код не сохранил
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 13:59
не знаю - может где то ошибочка была?Потому что я этот код прогонял через отладчик - обнулений не было
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
27.02.2011, 14:45
igoriy,
А так не проще? ))
Delphi
1
H := ShellExecute(Handle, 'open', 'notepad.exe', nil, nil, SW_RESTORE);
1
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 14:48
наверно проще - но все дело привычки
0
 Аватар для sidapas
23 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 228
27.02.2011, 15:54  [ТС]
спасибо всем за помощь нужно вот еще что когда я делаю обработчик онклик на кнопке и пишу в нем
Delphi
1
2
Timer1.Enabled:=StrToBool(Edit1.Text);
Memo1.Lines.SaveToFile('Text.txt');
и пишу текст в мемо и в едит тоже пишу интервал и нажимаю на кнопку выдает ошибку как это исправить и при нажатии на бутон1 в блокноте писался текст из того сохраненного текстового файла
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 15:57
лучше код весь пришли - не совсем понятно
0
 Аватар для sidapas
23 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 228
27.02.2011, 16:05  [ТС]
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, shellapi, StdCtrls, ExtCtrls, Spin;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Memo1: TMemo;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
 h, h1: hwnd;
 str: char;
 f: Textfile;
 str1: string;
implementation
 
{$R *.dfm}
// в инспекторе объектов ставим  Timer1.Enabled:= False;
procedure TForm1.Button1Click(Sender: TObject);
begin
 
 // открываем блокнот
 ShellExecute(Handle, 'open', 'notepad.exe', nil, nil, SW_RESTORE);
 sleep(200);// маленько тормознем
 h:= FindWindow('Notepad',nil);// находим дескриптор блокнота
 h1:= FindwindowEx(h, 0, 'Edit', nil);// находим дескриптор поля ввода блокнота - Edit
 if h1 <> 0 then // если найден дескриптор
  begin
  AssignFile(f, 'test.txt'); // открываем файл с текстом
  Reset(f);
  Timer1.Enabled:= True;//- врубаем таймер
  end;
 
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if not Eof(f) then   // если не конец файла
  begin
   read(f, str); // читаем символ
   str1:= str1 + str; // добавляем в строку
   SendMessage(H1, wm_settext, 0, lparam(string(str1))); //посылаем строку в блокнот
 
  end
  else Timer1.Enabled:= False; //текст кончился - останавливаем таймер
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=StrToBool(Edit1.Text);
Memo1.Lines.SaveToFile('Text.txt');
end;
 
end.
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 16:08
Цитата Сообщение от sidapas Посмотреть сообщение
Timer1.Enabled:=StrToBool(Edit1.Text);
здесь может быть интервал регулироваться должен?
1
 Аватар для sidapas
23 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 228
27.02.2011, 16:15  [ТС]
TrackBar что ли?
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
27.02.2011, 16:18
нет я не понял - ты хочешь регулировать скорость таймера?
тогда вот здесь
Цитата Сообщение от sidapas Посмотреть сообщение
begin
AssignFile(f, 'test.txt'); // открываем файл с текстом
Reset(f);
Timer1.Enabled:= True;//- врубаем таймер
end;
сделай вот так
Delphi
1
2
3
4
5
6
  begin
  AssignFile(f, 'test.txt'); // открываем файл с текстом
  Reset(f);
   Timer1.Interval:= StrtoInt(Edit1.Text);
  Timer1.Enabled:= True;//- врубаем таймер
  end;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2011, 16:18
Помогаю со студенческими работами здесь

Скриншот на WinApi
Доброго времени! Подскажите либу с помощью которой можно сделать скрин и сохранить в jpg. Можно даже либу которая конвертирует bmp в jpg,...

WINAPI and Delphi
Ребята,помогите пожалуйста с задачей по WINapi ....завтр над ее сдать...не сдам- прощай степендия(((...задача следующая: необходимо...

Postmessage WinApi
Добрый день форумчане. Вообщем задача такая: Через программу написаную на Delphi открыть программу AnVir Task Manager (1), потом в ней...

WinAPI функции
Суть программы: Есть две программы &quot;Клиент&quot; и &quot;Сервер&quot; Клиент посылает сообщение серверу с помощью PostMessage, при получении сообщения...

Программа на WINAPI
У меня есть такая задача, нужно сделать программу на котором будет распологаться кнопка &quot;TButton&quot; и компонент...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru