![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в 1С можно с Делфи запустить определенный пункт меню [D7, WinXP]
Раф © (2007-07-31 10:05:00)SendKey пробовал не получилось, может кто подскажет
tesseract (2007-08-10 10:58:00) [1]
> tesseract, пока ничего дельного ты не сказал. И единственное,
> чему можно у тебя тут научиться, так это болтовне.
Я сказал "не страдать фигнёй".
viman (2007-08-10 09:11:00) [2]tesseract, пока ничего дельного ты не сказал. И единственное, чему можно у тебя тут научиться, так это болтовне.
tesseract (2007-08-07 10:14:00) [3]
> И не слушай некоторых "умных" людей, которые говорят "нахрена
> тебе это надо". Надо, значит делай!
Кул хацкеры в бой с мозгом! У меня 5-летний опыт работы с 1с и 7-летний с delphi - у меня можно поучиться всяким школьникам.
Ricks (2007-08-06 18:04:00) [4]У меня только что получилось
var W, A : HWND;
begin
W:=FindWindow(nil, 'Загрузка данных');
if W = 0 then exit;
A:=FindWindowEx( W, 0, 'Button', 'OK' );
if A = 0 then exit;
SendMessage(A, WM_LBUTTONDOWN, 0, MakeLParam(1, 1));
SendMessage(A, WM_LBUTTONUP, 0, MakeLParam(1, 1));
Ricks (2007-08-06 17:59:00) [5]
> h2 := FindWindowEx(HndDialog, 0, 'Button', 'ОК');
> SendMessage(h2, BM_CLICK, 0, 0);
>
> И не нажимает, что не так подскажите?
Во первых чтобы нажимало надо посылать WM_LBUTTONDOWN и WM_LBUTTONUP. Проверено.
А если окно не находит то попробуй запустить для твоего HndDialog EnumChildWindowsи в нем уже отлавливай.
И не слушай некоторых "умных" людей, которые говорят "нахрена тебе это надо". Надо, значит делай!
tesseract (2007-07-31 17:26:00) [6]
> Ну если пишу, значит у меня есть на это свои причины пользователи
> тут совсем не причем, я делаю копию рабочей базы
Ламер захотел стать хацкером и для начала сломал…мозг…себе.
Используй обычный архиватор.
Раф (2007-07-31 16:13:00) [7]Ну если пишу, значит у меня есть на это свои причины пользователи тут совсем не причем, я делаю копию рабочей базы
tesseract (2007-07-31 15:52:00) [8]
> Раф (31.07.07 15:48) [19]
А чего тебе стандартного средства не хватает ? Всё же расписано.
> Остальные действия, не требующие от пользователя особо осмысленных
> действий (например, загрузка измененной конфигурации или
> восстановление данных), пока что автоматизации не подлежат.
>
А зачем ? Такого наворотить можно. Твои пользователи, что даже телефоном пользоваться не умеют ?
ЗЫ: Просто чемпионат какой-то начался.....
Раф (2007-07-31 15:50:00) [9]Попробовал так, реакции нет
While HndDialog=0 do HndDialog:= FindWindow(nil, 'Загрузка данных');
Sleep(1000);
SendMessage(HndDialog,WM_Command,MakeWParam(1,$0f),HndControl);
Раф (2007-07-31 15:48:00) [10]ну можно ведь пойти и другим путем, можно ентер нажать, тока как это сделать тоже пока не представляю
Сергей М. (2007-07-31 15:30:00) [11]Мдя..
Лыкомочалоначинайсначала)
Раф (2007-07-31 15:23:00) [12]Ну а как мне нажать её, подскажите тогда?
Сергей М. (2007-07-31 15:21:00) [13]
> что не так подскажите?
С какого перепугу окно целевой кнопки обязано реагировать на какое-то там "BM_CLICK" ?
Раф (2007-07-31 15:20:00) [14]переменная h2 блина равна нулю, то есть он не ловит кнопку
Перепробовал все варианты, и на русском и на Латинском все равно не ловит
Раф (2007-07-31 15:18:00) [15]Я все сделал, осталось тока нажать кнопку ОК, никак мне её не отловить
While HndDialog=0 do HndDialog:= FindWindow(nil, 'Загрузка данных');
Sleep(1000);
h2 := FindWindowEx(HndDialog, 0, 'Button', 'ОК');
SendMessage(h2, BM_CLICK, 0, 0);
И не нажимает, что не так подскажите?
tesseract (2007-07-31 14:24:00) [16]
> Увы, 1С очень любит делать все наполовину.. ;-(
А чего ещё не нравиться? 1с и есть платформа, а не законченное решение.
Сергей М. (2007-07-31 14:19:00) [17]
> Увы, 1С очень любит делать все наполовину
А это уже , сэр, Ваша личнаяполовая драма, коль Вы таки сделали ставку на геморрой на ровном месте)
Раф (2007-07-31 14:02:00) [18]http://www.sinor.ru/%7Efilez/hare/cfg_prm.html
Остальные действия, не требующие от пользователя особо осмысленных действий (например, загрузка измененной конфигурации или восстановление данных), пока что автоматизации не подлежат. Увы, 1С очень любит делать все наполовину.. ;-(
Сергей М. (2007-07-31 11:15:00) [19]http://www.sinor.ru/%7Efilez/hare/cfg_prm.html
Раф (2007-07-31 11:05:00) [20]Что не так делаю, почему Хендл меню не ловится, приходит 0 и все
var
Form1: TForm1;
buffer: array [0..255] of Char;
APchar:array[0..254] of char;
s:Hwnd;
implementation
{$R *.dfm}
procedure FillMenuList(var h: HMenu; List: TStrings);
var
i: Longint;
wid: Longint;
hs: Hmenu;
begin
for i := 0 to GetMenuItemCount(h)-1 do
begin
wid := GetMenuItemId(h, i);
if (wid <> -1) and
(GetMenuString(h, i, buffer, SizeOf(Buffer), MF_BYPOSITION) > 0) then
List.AddObject(Buffer, Pointer(wid));
hs := GetSubMenu(h, i);
if hs <> 0 then
FillMenuList(hs, List);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h: HMenu;
begin
h := GetMenu(s);
FillMenuList(h, ListBox1.Items);
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
with Sender as TListBox do
SendMessage( s,
WM_COMMAND,
MakeWParam(WParam(Items.Objects[ItemIndex]), 0),
0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
StrPCopy(APchar, '"c:\Program Files\1C7\BIN\1cv7.exe" CONFIG /DE:\Temp\1C7\ /NМихаил /P****');
s:=WinExec(APchar,SW_RESTORE);
end;
end.