» » » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001


Авторские права

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь можно скачать бесплатно "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
Рейтинг:
Название:
Советы по Delphi. Версия 1.4.3 от 1.1.2001
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.



…начиная с 1001. Смотрите другие файлы…






 function WindowExists(ClassName, WindowName: string): boolean;

 { Проверяем наличие определенного окна Window, используя для этого паскалевские строки вместо PChars. }

 var

  PClassName, PWindowName: PChar;

  AClassName, AWindowName: array[0..63] of char;

 begin

  if ClassName = '' then PClassName := nil

  else PClassName := StrPCopy(@AClassName[0], ClassName);

  if WindowName = '' then PWindowName := nil

  else PWindowName := StrPCopy(@AWindowName[0], WindowName);

  if FindWindow(PClassName, PWindowName) <> 0 then WindowExists := true

  else WindowExists := false;

 end; {WindowExists}


begin {DelphiLoaded}

 DelphiLoaded := false;

 if WindowExists('TPropertyInspector', 'Object Inspector') then

  if WindowExists('TMenuBuilder', 'Menu Designer') then

   if WindowExists('TApplication', 'Delphi') then

    if WindowExists('TAlignPalette', 'Align') then

     if WindowExists('TAppBuilder', '')  then DelphiLoaded := true;

end; {DelphiLoaded}

Следующая программа возвращает TRUE при запуске в Delphi IDE (ПРИМЕЧАНИЕ: это _не_ сработает, если подпрограмма в DLL).

function InIDE: Boolean;

begin

 Result := Bool(PrefixSeg) and Bool(PWordArray(MemL[DSeg:36])^[8]));

end; { InIDE }

Работа с IDE из программы

Вот три подпрограммы, работающие у меня в связке D1 и Win 3.1x:

function LaunchedFromDelphiIDE: Boolean;

{----------------------------------------------------------------}

{ Осуществляем проверку запущенности приложения из-под Delphi    }

{ IDE. Идея взята из сообщения в Delphi-Talk от Ed Salgado       }

{ из Eminent Domain Software.                                    }

{----------------------------------------------------------------}

begin

 LaunchedFromDelphiIDE := Bool(PrefixSeg) {т.е. не DLL}

  and Bool(PWordArray(MemL[DSeg:36])^[8]);

end; {LaunchedFromDelphiIDE}


function DelphiLoaded: Boolean;

{----------------------------------------------------------------}

{ Проверяем, загружена ли Delphi. Дает правильные результаты     }

{  - если вызывающее приложение запущено отдельно, или из-под IDE}

{  - если Delphi имеет открытый проект                           }

{  - если Delphi минимизирована.                                 }

{ Автор идеи Wade Tatman ([email protected]).                   }

{----------------------------------------------------------------}

begin

DelphiLoaded := false;

 if WindowExists('TPropertyInspector', 'Object Inspector') then

  if WindowExists('TMenuBuilder', 'Menu Designer') then

   if WindowExists('TAppBuilder', '(AnyName)') then

    if WindowExists('TApplication', 'Delphi') then

     if WindowExists('TAlignPalette',  'Align') then

      DelphiLoaded := true;

end; {DelphiLoaded}


function DelphiInstalled: Boolean;

{----------------------------------------------------------------}

{ Проверяем наличие Delphi.ini, ищем в нем путь к Библиотеке     }

{ Компонентов, после чего проверяем ее наличие по этому пути.    }

{----------------------------------------------------------------}

var IniFile: string;

begin

 DelphiInstalled := false;

 IniFile := WindowsDirectory + '\Delphi.ini';

 if FileExists(IniFile) then

  if FileExists(GetIni(IniFile, 'Library', 'ComponentLibrary')) then

   DelphiInstalled := true;

end; {DelphiInstalled}

Я уверен, что один из приведенных выше методов вам поможет. Последние две подпрограммы используют некоторые другие инкапсуляции Windows API и классов Delphi, и они определены следующим образом:

function WindowExists (WindowClass, WindowName: string): Boolean;

{----------------------------------------------------------------}

{ С помощью паскалевских строк проверяем наличие определенного   }

{ окна. Для поиска только имени окна (WindowName), используем    }

{ WindowClass '(AnyClass)'; для поиска только класса окна        }

{ (WindowClass), используем WindowName '(AnyName)'.              }

{----------------------------------------------------------------}

var

 PWindowClass, PWindowName: PChar;

 AWindowClass, AWindowName: array[0..63] of Char;

begin

 if WindowClass = '(AnyClass)' then PWindowClass := nil

 else PWindowClass := StrPCopy(PChar(@AWindowClass), WindowClass);

 if WindowName  = '(AnyName)' then PWindowName := nil

 else PWindowName := StrPCopy(PChar(@AWindowName), WindowName);

 if FindWindow(PWindowClass, PWindowName) <> 0 then WindowExists := true

 else WindowExists := false;

end; {WindowExists}


function WindowsDirectory: string;

{----------------------------------------------------------------}

{ Возвращаем путь к каталогу Windows (без обратной косой черты)  }

{----------------------------------------------------------------}

const BufferSize = 144;

var ABuffer: array[0..BufferSize] of Char;

begin

 if GetWindowsDirectory(PChar(@ABuffer), BufferSize) = 0 then WindowsDirectory := ''

 else WindowsDirectory := StrPas(PChar(@ABuffer));

end; {WindowsDirectory}


function GetIni(const IniFile, Section, Entry: string): string;

{----------------------------------------------------------------}

{ Получаем инициализационную 'profile' строку из определенного   }

{ пункта (Entry) определенной секции [Section] определенного     }

{ INI-файла (дополняем '.ini', если отсутствует). Возвращаем     }

{ нулевую строку, если IniFile, Section или Entry не найден.     }

{----------------------------------------------------------------}

var

 IniFileVar: string;

 IniFileObj: TIniFile;

begin

 if StrEndsWith(IniFile, '.ini') then IniFileVar := IniFile

 else IniFileVar := IniFile + '.ini';

 IniFileObj := TIniFile.Create(IniFileVar);

 GetIni := IniFileObj.ReadString(Section, Entry, '');

 IniFileObj.Free;

end; {GetIni} 

Как исправить проблемы с вызовом помощи при одновременно стоящих Delphi 1 и Delphi 2?

Nomadic отвечает:

A: (AP): Решаются так…

В regedit убейте из секции HKLM\SOFTWARE\Microsoft\Windows\Help все, что равно «…\help».

Изменив соответствующие пути, импортируйте в реестр следующий файлик:

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\delphi32.exe]

@="C:\\DELPHI2\\BIN\\delphi32.exe

"Path"="C:\\DELPHI2\\HELP"

Защита 

Борьба с SoftIce

Igor Nikolaev aKa The Sprite пишет:

Hаткнулся в инете на некий модуль StopIce, и любопытство сделало своё дело. Как долго я смеялся… :))))

Для тех, кто не в курсе: посмотрите export NmSymIsSoftIceLoaded (или что-то подобное) в nmtrans.dll.

Вот полный юнит против SOFTICE, при обнаружении отладчика перезагружает компьютер:

unit StopIce;


interface


implementation


uses Windows;


Function IsSoftIce95Loaded: boolean;

Var hFile: Thandle;

Begin

 result := false;

 hFile := CreateFileA('\\.\SICE', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

 if (hFile <> INVALID_HANDLE_VALUE) then begin

  CloseHandle(hFile);

  result := TRUE;

 end;

End;


Function IsSoftIceNTLoaded: boolean;

Var hFile: Thandle;

Begin

 result := false;

 hFile := CreateFileA('\\.\NTICE', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

 if (hFile <> INVALID_HANDLE_VALUE) then begin

  CloseHandle(hFile);

  result := TRUE;

 end;

End;


function WinExit(flags: integer): boolean;

 function SetPrivilege(privilegeName: string; enable: boolean): boolean;

 var

  tpPrev, tp: TTokenPrivileges;

  token: THandle;

  dwRetLen: DWord;

 begin

  result := False;

  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, token);

  tp.PrivilegeCount := 1;

  if LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID) then begin

   if enable then tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED

   else tp.Privileges[0].Attributes := 0;


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Книги похожие на "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Валентин Озеров

Валентин Озеров - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Отзывы читателей о книге "Советы по Delphi. Версия 1.4.3 от 1.1.2001", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.