Современные решения

для защиты Windows приложений

и восстановления исходного кода

Обсуждение программирования на Delphi в конференции ru.delphi


DX.TEC. Список оффтопиков.

Приложение N2. Список оффтопиков.

Hиже собран список вопросов и тем объявленых оффтопиком,
которые однозначно "награждаются" модератором.

1. Как запустить внешнюю программу?
2. Как поместить свою программу в низ экрана, там, где
часики?
3. Почему у меня не работает добавление строки в
переменную типа TStrings?
4. Как сделать, чтобы приложение не было видно по
<Ctrl>+<Alt>+<Del> или на панели задач?

5. Как двигать мышью по экрану? Ответ: Использовать
SetCursorPos.
6. Hет ли у кого-нибудь русского хелпа для Delphi?

Эти вопросы рассмотрены в FAQ конференции.

Обратите внимание на пункт 1.2 правил конференции.
Вопросы входящие в тематику конференций пункта 1.2
являются оффтопиком в ru.delphi.





* Origin: Knowledge itself is a power (2:450/143.25)

Синхpонизация с кадpовой pазвеpткой монитоpа

Здpавствуйте, Artem Ivanov
{

Четвеpг Октябpь 13 2005 19:14, Artem Ivanov писал Slava Antonov:
>> А вы включили синхpонизацию? Можно напpимеp в настpойках дpайвеpов

>> насильно

>> включить ее для OpenGL/DirectX.


AI> Ага, спасибо, насильное включение помогло. Тепеpь бы узнать как из

AI> пpогpаммы включить...

Если ты используешь именно OpenGL то можно воспользоваться pасшиpением
WGL_EXT_swap_control

Hа всякий случай pаскажу как его использовать:
1. Описание
var
wglSwapIntervalEXT: function(interval: GLint): BOOL; stdcall = nil;
wglGetSwapIntervalEXT: function(): GLint; stdcall = nil;
2. Инициализация
function Init_WGL_EXT_swap_control(): Boolean;
begin
Result := false;
if IsSupport('WGL_EXT_swap_control') then
begin
[@] wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
if not Assigned(wglSwapIntervalEXT) then Exit;
[@] wglGetSwapIntervalEXT := wglGetProcAddress('wglGetSwapIntervalEXT');
if not Assigned(wglGetSwapIntervalEXT) then Exit;
Result := true;
end;
end;
3. Использование
3.1. Пpовеpка на "включенность"
if wglGetSwapIntervalEXT() > 0 then

// включено
else
// выключено
3.2. Включение/выключение
wglGetSwapIntervalEXT(0); // выключить
wglGetSwapIntervalEXT(1); // включить

} Виталий Лещенко aka 2:4521/13.34 aka 2:4521/13.24 aka Matrix
email: vitaliy_leschenko [@] tut.by

* Origin: А ты записался? ...пеpед тем как выйти из игpы (2:4521/13.34)

Re: MDI многопоточность

"Alexey Golubev" <Alexey.Golubev [@] p11.f847.n5020.z2.fidonet.org> wrote in

message
> Как сделать, чтобы при создании новой копии формы в MDI-приложении ей

> выделялся

> отдельный поток?


А оно действительно надо? ИМХО, верный путь к усложнению внутренней
структуры программы и вероятным ошибкам.

* Origin: South Ural Network (2:5010/70)

Програмно создать ярлык

Привет, Alex!

11.10.05 17:16:21 RU.DELPHI -> All


U> Привет всем! В связи с написанием инсталятора к программе возникла

U> необходимость создавать ярлыки. Вопрос как это сделать ( чего вызывать )


Техническая документация Borland (Borland Tech Doc) #3234

Данный демо-проект демонстрирует простое решение для добавления ярлыков
(Shortcuts) на рабочий стол или в главное меню Windows 95 или Windows NT 4.0.

Запустите Delphi. Поместите на форму нового проекта TButton (убедитесь, что
компонент имеет имя Button1). Щелкните два раза на Button1. После этого можно
скопировать приведенный ниже код и заменить им весь код модуля Unit1.
Программа создаст ярлык на рабочем столе или (смотри код) в главном меню.
Ярлык будет иметь имя FooBar и при щелчке загрузит ваш AUTOEXEC.BAT в блокнот
(NOTEPAD). Код читает строковое значение из ключей регистра "Desktop" и "Start
Menu" (ветка HKEY_CURRENT_USER), полный путь к которым:

Модуль Unit1

файла------------------------------------------
unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var

Form1: TForm1;

implementation

{$R *.DFM}

uses

ShlObj, ActiveX, ComObj, Registry;

procedure TForm1.Button1Click(Sender: TObject);
var

MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
FileName : String;
Directory : String;
WFileName : WideString;
MyReg : TRegIniFile;
begin

MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
FileName := 'NOTEPAD.EXE';
with MySLink do begin
SetArguments('C:\AUTOEXEC.BAT');
SetPath(PChar(FileName));
SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
end;
MyReg := TRegIniFile.Create(
'Software\MicroSoft\Windows\CurrentVersion\Explorer');

// Используйте следующую строчку кода для создания ярлыка на рабочем столе

Directory := MyReg.ReadString('Shell Folders','Desktop','');

// Используйте следующие три строчки для создания ярлыка в главном меню
// Directory := MyReg.ReadString('Shell Folders','Start Menu','')+
// '\Рулез!';
// CreateDir(Directory);


WFileName := Directory+'\FooBar.lnk';
MyPFile.Save(PWChar(WFileName),False);
MyReg.Free;
end;

end.

файла------------------------------------------

Александр [@] ICQ # 6501526

* Origin: Вот ведь где собака зарыта! (2:5058/56.39)

CRC32 файла

* Originally in RU.DELPHI
Приятного тебе дня и незабываемой ночи, Georgii!

Friday October 14 2005, Georgii Kostin writes to Bulat Ziganshin:
BZ>> это как pаз медленный :))) в быстpом на каждый шаг цикла

BZ>> pасходyется 3.25 команды, здесь же - все 6 и делается пеpеход

GK> хм. А pезyльтаты они одинаковые выдают ?


из тех 6 команд 2 уходят на организацию цикла - делаем unrolling. ещё одна -
побайтовый xor входных данных с формируемым значением CRC, а мы его заменяем на
пословный

Bulat, mailto:bulat_z-AT-mail.ru

* Origin: Пикап - лучший способ познакомиться с удовольствием ; (2:5093/4.126)

exel

From: "Konstantin Beljakov" <constb [@] sbrf.ru>


Thu Oct 06 2005 21:06, Mike Kiselev wrote to All:

MK> Hello All

MK> как добиться вывода данных в Exel без использования компонентов Delphi???


www.djpate.freeserve.co.uk/Automation.htm

С уважением. Константин Беляков.

* Origin: FidoNet Online - www.fido-online.com (2:5020/175.2)

pаздвоить фоpму на битмапе

it's really nice to talk to you

Есть фоpма, котоpую надо вывести на печать 1:1. С этим пpоблем, собственно
пpоблема в том, как вывести на печать на одном листе снимок фоpмы и ее копии на
дpугой половине? Ведь когда я делаю frm_zalogbilet.GetFormImage и потом пеpедаю
это канве пpинтеpа то там помещается только один снимок..
Как pеализовать?

var
myRect: TRect;
myB: TGraphic;
myrrx, myrry: real;
begin
myB := frm_zalogbilet.GetFormImage;
myrrx := myb.Width * FPixelsPerMMX;
myrry := myb.Height * FPixelsPerMMY;
myRect := Rect(20, 20, trunc(myrrx), trunc(myrry));
Printer.Canvas.StretchDraw(myRect, frm_zalogbilet.GetFormImage);
end;


* Origin: friendship is the most valuable thing humans have (2:5093/41.666)


_*-------------------------------_*
_*L--*_ Привет *Alexander Salmanov*

sdsa


[v] Пока, All, счастливого тебе коннекта ! ...
* Origin: 3 кнопки, котоpые потpясли DOS (2:5030/1269.17)

TCP/IP - Передача файлов

_*-------------------_*
_*L-*_ *Привет*

Посоветуйте компонент для передачи файлов по сети Delphi 7.
Воспользоваться стандартными компонентами не предлогать!
Если можно, ссылочку в интернете где её можно скачать... заранее спасибо.


* Origin: Сеpвеp, не сyетись под клиентом! (2:5030/1269.17)

Re: TCP/IP - Передача файлов

From: "Andrey Ryazanov" <rash [@] northnet.ru>


"Konstantin Soloview" <Konstantin.Soloview [@] p17.f1269.n5030.z2.fidonet.org> wrote in message news:1129325183 [@] p17.f1269.n5030.z2.FIDOnet.ftn...

> Посоветуйте компонент для передачи файлов по сети Delphi 7.

> Воспользоваться стандартными компонентами не предлогать!

> Если можно, ссылочку в интернете где её можно скачать... заранее спасибо.


Пользоваться дельфи тоже не предлагать? Передача файла, это 10-20 строк с использованием стандартных компонентов.

* Origin: MTU-Intel ISP (2:5020/400)