Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в 1С можно с Делфи запустить определенный пункт меню [D7, WinXP]


Страницы:   1 2

Раф ©   (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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо