Jump to content
BulForum.com

Pomo6t Za Delphi


Harbachek

Recommended Posts

Poneje ne znam kade trqbav6e da sloja temata za6toto e svarzana s programirane zatova izbrah temata Others i se nadqvam 4e nqkoi 6te mi pomogne

:bgrin:

eto kakav e problema:

 

1)kak moga da napravq programata da sedi ikonata do na 4asovnika v dolniq desen agal to4no ne znam naimenovanieto kak e

 

2) Kak moga da napravq programa koqto da raboti dori da e inactive prozoreca i

 

3) Kak moga da napravq programata da ne se vijda nikade a samo v Processes na Task Mannagera

 

Blagodarq predvaritelno :punk

 

 

P.S. Priemam sa6to i nai obiknoveni komentari :bgrin:

Link to comment
Share on other sites

1)kak moga da napravq programata da sedi ikonata do na 4asovnika v dolniq desen agal to4no ne znam naimenovanieto kak e

 

2) Kak moga da napravq programa koqto da raboti dori da e inactive prozoreca i

 

3) Kak moga da napravq programata da ne se vijda nikade a samo v Processes na Task Mannagera

 

Значи :D

1. Аз използвам компонента Tray Icon. Свали си го от http://aph3x.hit.bg/trayicon.zip

2. Всяка програма работи дори да е inactive прозореца. Зависи какво точно представлява тя. В смисал компонентите (които всъщност са си обекти) си стоят в паметта и работят независимо един от друг на базата на методите (events) които настъпват при различни ситуации.. Това е доста неконкретен въпрос.

3. Става много лесно :) просто пишеш: MainForm.Hide;

Само че ако го напишеш във OnCreate (или OnShow) ще ти даде грешка. Затова аз използвам следният метод:

Добавям един Timer със време 500 ms (или по малко, някаква минимална стойност)

Който е Disabled по подразбиране. Във OnCreate na MainForm пиша: Timer1.Enabled := true; (или Enabled или Active.. не се сещам точно как беше..)

при което таймера се задейства.

След това към метода OnTimer вече пишa MainForm.Hide;

Edit1: както и разбира се Timer1.Enabled := false; за да се спре таймерчето.

Просто формата за някаква минимална част от секундата се показва.. теоритично ;)

Относно криенето на програмта от Task Manager-a знам само как става при Win98 (за XP-то не знам) значи където си добавил MainForm.Hide;

пишеш следния ред: RegisterServiceProcess(GetCurrentProcessID,1);

 

Другия по-културен начин е със: Application.ShowMainForm:=False;

който си го добавяш вече спокойно във FormCreate. Тук обаче трябва да определиш коя форма е дефинирана за MainForm..

 

Дерзай ;)

Link to comment
Share on other sites

http://subsimple.com/delphi.asp

Е това ти трябва!

Виж първия линк - там е обяснено в три реда (CoolTrayIcon).

работи под Делфи 2-7.

Аз го ползвам под 7-цата и работи идеално, и под ХР.

Не се бъхти да правиш компромиси приложението си, особено ако не знаеш точно как действат методи като Mainform.Hide. Или пък еквилибристиките с таймера (и тях съм ползвал преди :) ).

И за това си има предостатъчно компоненти, които за минута ще ги вкараш и настроиш както искаш поведението на прозореца да бъде, бутона в таскбара да го има или няма.

В момента не мога точно да ти кажа компонент, от известно време не ползвам делфи, но ще проверя за изпитан компонент.

Link to comment
Share on other sites

Защо @tedy? Application.ShowMainForm:=False; работи идеално без таймер. Просто се сетих за него малко по късно и затова първо написах в поста хватката с таймер-а която между другото хич не е лоша. Предпочитам нея вместо да се боря с инсталацията на нови компоненти което гледам да избягвам тък като много често стигам до някакви несъвместимости...

Link to comment
Share on other sites

@aph3x, съгласен съм с теб, че Application.ShowMainForm:= false; е начинът.

Мисълта ми беше точно за mainform.hide и за това, че с компоненти винаги е много по-лесно и бързо да се постигне нещо, което иначе може да се блъскаш да пишеш с дни. Аз лично досега проблеми с компоненти съм нямал, разбира се първо претърсвам за най-добрия и известен компонент за целта ми, и тогава го инсталирам.

Специално за CoolTrayIcon, съм много доволен, има всичко за работа с трей икони и таскбар икони - показване, скриване и т.н.

Link to comment
Share on other sites

Специално за CoolTrayIcon, съм много доволен, има всичко за работа с трей икони и таскбар икони - показване, скриване и т.н.

 

Знам го.. не е лош :)

Мисля че с това изчерпихме темата..

 

peace :love

Link to comment
Share on other sites

3. Става много лесно :) просто пишеш: MainForm.Hide;

Само че ако го напишеш във OnCreate (или OnShow) ще ти даде грешка. Затова аз използвам следният метод:

Добавям един Timer със време 500 ms (или по малко, някаква минимална стойност).........

 

Стандартно направено и наистина заблуден начин да направиш нещо СЛЕД като се е заредило всичко.

 

Имаш 2 варианта от които единият пак е леко заблуден, но не чак толкова - става дума за OnPaint - слагаш си флагче което при OnCreate го инициализираш а при OnPaint го проверяваш дали е true и ако е първо го правиш на false и после правиш каквото правиш.

 

По-правилния начин е в OnShow да направиш нещо като

 

PostMessage(handle, wm_user+01, 0, 0);

 

и да си направиш метод:

 

procedure wmUser01(var M:TMessage); message wm_user+01;

 

и после тази процедура да си я разпишеш и да правиш каквото желаеш

 

 

на темата за ползване на компоненти - не мисля че за MainForm.Hide трябва да се ползва компонент. Все пак е точно 1 ред текст. То бива да се програмира с кликане на мишката ама чак толкова.

 

За това къде да се копира програмата и дали правилното място е autoexec.bat..... просто по-голям виц не съм чувал. Пльосни си я в App Programs -> Startup ако искаш или на по-скрито място в Registry-to : HKLM/Software/Microsoft/Windows/CurrentVersion/Run

 

Сега за keylogger - трябва да прихванеш клавиатурата - прегледай SetWindowsHookEx но като гледам как си формулирал въпроса ще трябва доста да се бориш с проблема. Понеже искаш да прихванеш на ниво система ще трябва keylogger-a да го сложиш в отделен DLL за да хващаш всичко, въпреки това не съм убеден че ще хванеш от някоя игра понеже там всичко минава през DirectX и не съм сигурен дали клавиатурата минава през стандартните windows message истории.

 

 

Другия по-културен начин е със: Application.ShowMainForm:=False;

 

Специално за това да не се показва главната форма и хич да не мига и да не се пльосва името на програмата до старт бутона точно това е начина, да :)

Link to comment
Share on other sites

Относно автоматичното стартиране:

 

след implementation слагаш следното:

 

procedure WriteToReg;

var TReg:TRegistry;

begin

TReg:=TRegistry.Create;

TReg.RootKey:=HKEY_LOCAL_MACHINE;

TReg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',False);

if TReg.ValueExists('ime_na_programata') = False then

TReg.WriteString('ime_na_programata','c:\put_do_faila\programa.exe');

end;

 

и например във OnCreate се обръщаш към процедурата със:

WriteToReg;

Link to comment
Share on other sites

:angry:  Добре де за какво се захвана за първия вариант който предложих? Предложил съм 2 варианта от които вече казах че втория е по-читав, а @tedy предложи и 3-ти.

 

 

Казвам ти го за да се научиш на нещо малко по-правилно. Слагането на таймери е грубо, особено ако смяташ да ги ползваш за нещо такова :)

 

Нямах намерение да те обидя или засегна :)

 

Дори ако имаш свободно време бих могъл да ти предложа работа - прати ми PM ако те интересува.

Link to comment
Share on other sites

Относно автоматичното стартиране:

 

след implementation слагаш следното:

 

:) ще си позволя да модифицирам твоя код ако не възразаваш:

 

procedure WriteToReg;
var r:TRegistry;
begin
  r:=TRegistry.Create;
  r.RootKey:=HKEY_LOCAL_MACHINE;
  r.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',False);
  if r.ValueExists(Application.Title) = False then
     r.WriteString(Application.Title,Application.ExeName);
end;

Link to comment
Share on other sites

Тъй като става вапрос за програмаТА можеш ли да кажеш за коя програма става на въпрос  :confused

 

Това мисля трябва да влезе в Hall Of Fame за най-добри въпроси ... Както и отговора на karaman за Autoexec.bat

 

При положение, че се говори за програма която човека е написал че става дума за програмиране а от заглавието се разбира че я прави на Delphi. Хайде да предположим за коя програма става дума и дали си има име тази програма. Аз като гледам въпросите още не е започнал. Ти как би желал да я кръстиш? :D

 

Не искам да се заяждам и особено високо ценя желанието ви да помогнете за което искрено ви поздравявам! Ако някой се е почуствал засегнат готов съм да го почерпя биричка някъде за изглаждане на отношенията и да помни добрият старец с добро :beerchug

 

 

---------------------------------

 

 

Сега отново за стартирането и прочее - най-добре е да се направи не на програма а на windows service нещо подобно и тогава ще се стартира още преди да се зареди самият windows. Я вземи сподели този keylogger за какво мислиш да го ползваш и какъв пъклен план имаш и какво целиш в крайна сметка? :)

 

 

---------------------------------

 

SORRY за спама. Не зная как стана така че се пльоснаха 3 поредни post-a. SORRY още един път

Link to comment
Share on other sites

Haha ami po princip az sam mlad v naukata programirane za6toto po4nah predi 3 godini kogato bqh v 5 klas i na dlephi minah predi 1 godina no ne sam si igral s takiva raboti da isam da si napravq keyloger za da si broq po kolko bukvi pi6a v mircata a i osven tva kato cakam edna igra Highway Pirsuit poneje s ednata klaviatura dokato natiskam Spase(strelba)i ne moga da mardam nalqvo a s drugata moga i se opitvam da vidq to4no kakvi kop4eta natiskam.

 

Ina4e blagodarq za startupa vaporeki 4e znam 4e se bumka v startup pak ne iska da se startira ama tova nqma zna4enie az go butnah v registrite i raboti 10x Mn :D

Link to comment
Share on other sites

@djadomraz, за прехващане на клавиатурата, тези начини които си дал, най-вероятно са като йероглифи за човека :) . Би трябвало да влезнеш в положението му и да не му даваш такива странни кодове, вероятно няма да те разбере за какво става въпрос.

В случая с прехващането на клавиатурата на системно ниво отново няма смисъл да се бъхти, след като и за това има компоненти, в момента не ми се рови да давам с какъв съм работил аз.

Леки, безплатни компоненти, безпроблемно се инсталират, работят идеално, какво повече му трябва - да тормози мозъка си да открива топлата вода :)

Е, освен ако не иска да се научи как става..

Link to comment
Share on other sites

poneje s ednata klaviatura dokato natiskam Spase(strelba)i ne moga da mardam nalqvo a s drugata moga i se opitvam da vidq to4no kakvi kop4eta natiskam.

 

Ай стига бе. Ти 2 клавиатури ли имаш? На мен 1 ми е напълно достатъчна... да не би да пропускам нещо?

 

Ina4e blagodarq za startupa vaporeki 4e znam 4e se bumka v startup pak ne iska da se startira ama tova nqma zna4enie az go butnah v registrite i raboti 10x Mn :D

 

няма логика като сложиш shortcut към програмката в startup-а да не се стартира. просто няма такъв филм.

 

за key logger и въобще за SetWindowsHookEx() прочети тази статийка:

http://delphi.about.com/od/vclusing/l/aa101000a.htm

 

А ако не искаш да се учиш особено а само да си свършиш работата - има и готови компоненти:

http://www.delphipages.com/result.cfm?SR=h...uestTimeout=500

 

Въобще потърсиш ли в google нещо като "delphi setwindowshook keyboard".

 

Според мен добре си се ориентирал с Delphi следващите неща които ще е добре да погледнеш са : C++, Java i С#. Ще забележиш че доста си приличат и трите. В Java i C# може да намериш елементи от паскал но не са много.

 

А някой ден ако ти се ще да си поиграеш малко можеш и с SQL и бази данни да се запознаеш въпреки че отначало могат да ти се сторят леко скучни (може би, а може и да бъркам в момента) всъщност има доста хляб там. А SQL е лесен език и има доста генератори тъй че само кликаш наляво надясно а те ти разписват кода, та е лесно да се учиш от тях.

 

Успехи в учението и конкретното начинание ти пожелавам :)

 

 

@djadomraz, за прехващане на клавиатурата, тези начини които си дал, най-вероятно са като йероглифи за човека  :) . Би трябвало да влезнеш в положението му и да не му даваш такива странни кодове, вероятно няма да те разбере за какво става въпрос.

В случая с прехващането на клавиатурата на системно ниво отново няма смисъл да се бъхти, след като и за това има компоненти, в момента не ми се рови да давам с какъв съм работил аз.

Леки, безплатни компоненти, безпроблемно се инсталират, работят идеално, какво повече му трябва - да тормози мозъка си да открива топлата вода :)

Е, освен ако не иска да се научи как става..

 

Да бе забравих че има компоненти за всичко дори за абсолючно излишни според мен неща. Аз разгледах 1-2 пъти SetWindowsHookEx и си написах каквото ми трябваше преди време, но все пак 10те години опит си казват думата. По-лесно ми беше да си го напиша отколкото да търся компонент :)

 

Само че момента с прихващането на гловално ниво и това че KeyboardHookProc трябва да е в DLL за да работи не само за твоята програма а за всички го има и не знам с компонентите как е решено и предпочитам сам да си го направя. Не забравяй че ако не искаш да имаш програмка вършеща почти нищо но голяма 3МБ само защото си сложил 3 компонента от типа прави всичко сам и ползваш само малка част от възможностите им (и даже не си наясно какво всъщност могат да правят) по-добре си напиши малко код сам.

 

А и той може да иска да се учи. Да знае как се правят нещата винаги е полезно дори после да решиш да ползваш компоненти.

 

Аз преди да ползвам на F.Piette компонентите (ICS) му прегледах кода за да се ориентирам къде, какво и как прави. Ей това е най-хубавото на компонентите със сорс код - можеш да научиш доста неща от тях гледайки кода (ако щеш дори неща като добър стил на писане на програми и начини за комуникация между различни обекти/програми)

Link to comment
Share on other sites

Съгласен съм с теб, единственото което имах предвид е, че в случая Harbachek едва ли има време и хъс да се занимава да учи разни 'системни' неща, които за да се научиш да ги програмираш е нужно малко повече от просто познаване на синтаксиса на даден език, например OPascal.

SetWindowsHookEx може и да намери инфо за него, но едва ли ще разбере как точно работи, за 1 ден. Може и да се лъжа.

И да, така е, компонентите които съм имал 'щастието' да ползвам преди време бяха точно такива - с DLL. Ти сам каза, че няма как иначе :)

DLL файла беше под 20 КБ, компонента беше също много малък. Както и да е, не искам да кажа, че компонентите са решение за всичко, просто те за това са и измислени, за повторно използване, ако някой е написал нещо и то работи, да се използва и в други проекти. Исках просто да кажа, че ако имаш богата база данни от компоненти, включително и към уеб ресурси, търсенето в повечето случаи е по-продуктивно отколкото писането наново на неща, които ги има. Така човек се съсредоточава към решаването на конкретния си проблем, а не с тривиални неща.

В случая за теб може и да отнеме минутки да го напишеш, за друг може и 2 дена да отнеме, но компонентите са незаменими когато става въпрос по-бързо да завършиш някой проект, особено ако компонентът покрива по-голямо количество функции, които да се програмират наново би отнело много време. Но ти ги знаеш тези неща, просто ги споменавам по принцип.

(това май стана все едно чета някой учебник по информатика :) ).

Надявам се, ме разбра какво исках да кажа, всички тези неща са част от project management-a, всичко в името на продуктивността, допускането на по-малко грешки и т.н.

Не искам да кажа, че съм навътре в нещата, просто това съм го и учил в университета :)

Link to comment
Share on other sites

tedy, абсолютно си прав и дори бих препоръчал на повечето хора да ползват компоненти по 2 причини:

 

1. работят и вероятността да има грешки в тях е по-малка отколкото тепърва ако почнат да пишат същото

2. времето нужно за разработка (все пак времето е пари, нали така)

 

само че ако компонента е със сорс код в противен случай аз отказвам да ползвам компонент колкото и страхотен да е по ред причини... след като видях Delphi 2005 не мисля че аргумента "защото може да излезе по-нова версия на Делфи и ще трябва да се търси нов компонент" продължава да важи... това чудовище Д.2005 просто няма равно на себе си и не мисля че някога ще се престраша да го ползвам но при всички положения предпочитам да ползвам компонент който при желание бих могъл да променя (примерно както направих със стандартния TBitBtn в д.4 - като нямаше начин да сложа цвят на бутона наложи се да си направя мой вариант - дълга и тъжна история както казва Здравко от Биг Брадър)

 

>> (това май стана все едно чета някой учебник по информатика ).

 

нищо лошо няма в учебниците. от доста полезни и хубажи книги са преписвали хората, доста от тях даже ги познавам лично и гарантирам, че докато са преписвали не са правили грешки :lol:

Link to comment
Share on other sites

Ха, да си дойдем на думата !!!

Точно Д2005 ми бърка в здравето в момента.

Едно, че постоянно 'замръзва' в опит да обиколи целия проект и да му прави някакъв анализ само при промяна на 1 буквичка (описание на проблема тук, но решение - йок), ами и компонентите трябва да им търся сорсове...

 

Та конкретно проблема : някой да има случайно Varian Async32 (TVaComm) със сорс ? Много ми трябва ! Намерих QuickReports със сорс на едно китайско сайтче, сега само този ми остана (май).

Link to comment
Share on other sites

Ха, да си дойдем на думата !!!

Точно Д2005 ми бърка в здравето в момента.

 

Стига глупости. Този динозавър не мисля да го ползвам.

 

1. зарежда за над 1 минута на моя компютър (за сравнение D4 - D7 зареждат за под 15 сек, MS Visual Studio.NET 2003 също за около 10-15 сек.)

2. опитах се да подкарам FastReports (нещо такова - със сорс код ги имам) и накрая не тръгна самото печатане (другото тръгна) но да предположим че не това е главния проблем, но щом компоненти работещи на всички предходни версии на делфи работят а тук не значи има нещо централно което е променено а нямам време да се боря сега с това

3. размаза нещо по IIS-тo и Visual Studioto не можеше да създаде нов уеб проект.

 

Изобщо не знам как са го направили Борланд, но е направо като динозавър. Разочарован съм. Освен това, въпреки всичките подобрения мога само fixed-width шрифтове да ползвам (а Visual Studio-то може и такива като Arial, Tahoma, Verdana или MS Sans Serif примерно).

 

 

За COM port компонентите - аз ползвам доста успешно тези на Dejan Crnila и не ми е липсвало нищо. Пробвай нещо като eDonkey/Overnet (за предпочитане първо си сложи VMWare и после си ги инсталирай тези боклуци че в противен случай не можеш да се отървеш от spyware), аз съм намирал доста полезни неща с тях въпреки че е по-добре наистина човек да си закупи компонентите официално :)

Link to comment
Share on other sites

в темата за проблема която посочих, един пич казва, че ако се изрежат всички .net неща, ставало доста бързо и добро IDE за Win32 development

утре смятам да пробвам

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...