Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 09.12.2015, 11:36
VKoonts VKoonts вне форума
Прохожий
 
Регистрация: 06.12.2015
Сообщения: 13
Версия Delphi: XE8 v.22xx
Репутация: 10
По умолчанию

На сайте винды не нашел описание переменной содержащей описание события =(
Есть только различные значения этого события.
Как выудить само описание?
Ответить с цитированием
  #17  
Старый 09.12.2015, 11:42
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

чтение журнала занимает определенное время, поэтому при создании формы не очень это выглядит. но потоки спасут ситуацию. для EventID нужно применить маску $FFFF, чтобы совпало с просмотром событий. в справке все про это написано.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #18  
Старый 09.12.2015, 12:33
VKoonts VKoonts вне форума
Прохожий
 
Регистрация: 06.12.2015
Сообщения: 13
Версия Delphi: XE8 v.22xx
Репутация: 10
По умолчанию

Стесняюсь спрасить, а как эту маску применить?

Код:
Memo1.Lines.Add('Код события: '+IntToStr(Buffer^.EventID($FFFF)));

А все-таки, как выудить описание?
Ответить с цитированием
  #19  
Старый 09.12.2015, 13:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

оператор and
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #20  
Старый 09.12.2015, 15:29
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

описание события:
Код:
PChar(DWORD(Buffer)+Buffer^.StringOffset)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #21  
Старый 10.12.2015, 19:37
VKoonts VKoonts вне форума
Прохожий
 
Регистрация: 06.12.2015
Сообщения: 13
Версия Delphi: XE8 v.22xx
Репутация: 10
По умолчанию

Нашел другой способ получить необходимые данные:

Код:
procedure RunDosInMemo( DosApp, dd:String;AMemo:TMemo);
 const
    ReadBuffer = 2400;
 var
  Security            : TSecurityAttributes;
  ReadPipe,WritePipe  : THandle;
  start               : TStartUpInfo;
  ProcessInfo         : TProcessInformation;
  Buffer              : PAnsichar;
  BytesRead           : DWord;
  Apprunning          : DWord;
  Fil                : string;
 begin
  With Security do begin
   nlength              := SizeOf(TSecurityAttributes);
   binherithandle       := true;
   lpsecuritydescriptor := nil;
  end;
  if Createpipe (ReadPipe, WritePipe,
                 @Security, 0) then begin
   Buffer  := AllocMem(ReadBuffer + 1);
   FillChar(Start,Sizeof(Start),#0);
   start.cb          := SizeOf(start);
   start.hStdOutput  := WritePipe;
   start.hStdInput   := ReadPipe;
   start.dwFlags     := STARTF_USESTDHANDLES +
                        STARTF_USESHOWWINDOW;
   start.wShowWindow := SW_HIDE;
      Fil := DosApp;
      Fil := Fil + dd;
   if CreateProcess(nil,
          PChar(Fil),
          @Security,
          @Security,
          true,
          NORMAL_PRIORITY_CLASS,
          nil,
          nil,
          start,
          ProcessInfo)
   then
   begin
    repeat
     Apprunning := WaitForSingleObject
                  (ProcessInfo.hProcess,100);

    until (Apprunning <> WAIT_TIMEOUT);
     Repeat
       BytesRead := 0;
       ReadFile(ReadPipe,Buffer[0],
               ReadBuffer,BytesRead,nil);
       Buffer[BytesRead]:= #0;
       AMemo.Text := AMemo.text + String(Buffer);
     until (BytesRead < ReadBuffer);
  end;
  FreeMem(Buffer);
  CloseHandle(ProcessInfo.hProcess);
  CloseHandle(ProcessInfo.hThread);
  CloseHandle(ReadPipe);
  CloseHandle(WritePipe);
  end;
 end;

procedure TForm1.Button2Click(Sender: TObject);
var
onepart,twopart: string;

begin
  Memo1.Clear;
  onepart:= Copy(Edit1.Text,1,1);
  twopart:= Copy(Edit1.Text,2,Length(Edit1.Text)-1);
  RunDosInMemo(onepart,twopart,Memo1);
end;
Ответить с цитированием
  #22  
Старый 10.12.2015, 19:58
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

способ называется через ().()
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #23  
Старый 11.12.2015, 06:35
VKoonts VKoonts вне форума
Прохожий
 
Регистрация: 06.12.2015
Сообщения: 13
Версия Delphi: XE8 v.22xx
Репутация: 10
По умолчанию

Согласен, зато описание события полное, а не 1 параметр из 3х.
StringOffset выдает лишь с кем произошло событие, а какое сыбытие история умалчивает. Плюс еще лвл события я не нашел нигде =(
Ответить с цитированием
  #24  
Старый 11.12.2015, 08:12
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

просто тебе лень почитать Windows Events
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #25  
Старый 11.12.2015, 14:07
VKoonts VKoonts вне форума
Прохожий
 
Регистрация: 06.12.2015
Сообщения: 13
Версия Delphi: XE8 v.22xx
Репутация: 10
По умолчанию

Дело не в лени =( английский плохо знаю, и в Си не разбираюсь =(
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Вроде пример какой то есть, но разобраться в нем я не в состоянии =(
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter