mesaj penceresi mesajını kontrol etek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
mesaj penceresi mesajını kontrol etek
Arkadaşlar nero programı ile kayıt yapılan cd lerin günlük olarak raporunu tutacak bir program yapmak istiyorum yani günlük kaç cd kaydedildi bayadır bir arama yaptım fakat bir sonuç elde edemedim,
aklıma bir fikir geldi neroda kayıt birince küçük bir mesaj penceresi açılıyor ve 'yazım işlemi başarı ile bitti ' yazıyor benim bu mesajı kontrol edip eğer bu mesaj geldi ise işlem yaptırabilirmiyim mesela veri tabanına şunu ekletebilirim 02/11/2006 02:30 cd kaydedildi gibi bir işlem
ikinci birşey yazım işlemi tamamlanınca büyük pencere başlığı 'bitti'
olarak değişiyor ve bu mesaj penceresi ekrana geliyor eğer mesaj penceresini kontrol edemezsem arka da kalan diğer pencere başlığı nı kontrol ederek işlem yaptıra bilirmiyim
Bu konuda yardımlarınızı bekliyorum arkadaşlar bu konu uzun zamandır benim oldukça büyük bir sorunum oldu çünkü...
aklıma bir fikir geldi neroda kayıt birince küçük bir mesaj penceresi açılıyor ve 'yazım işlemi başarı ile bitti ' yazıyor benim bu mesajı kontrol edip eğer bu mesaj geldi ise işlem yaptırabilirmiyim mesela veri tabanına şunu ekletebilirim 02/11/2006 02:30 cd kaydedildi gibi bir işlem
ikinci birşey yazım işlemi tamamlanınca büyük pencere başlığı 'bitti'
olarak değişiyor ve bu mesaj penceresi ekrana geliyor eğer mesaj penceresini kontrol edemezsem arka da kalan diğer pencere başlığı nı kontrol ederek işlem yaptıra bilirmiyim
Bu konuda yardımlarınızı bekliyorum arkadaşlar bu konu uzun zamandır benim oldukça büyük bir sorunum oldu çünkü...
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Arkadaşın dediği gibi
en basiti bir timer koyup pencere captin kontrolü yapıp database yazarsın.
gibi.........
en basiti bir timer koyup pencere captin kontrolü yapıp database yazarsın.
Kod: Tümünü seç
var
h : hwnd;
begin
h := GetForegroundWindow;
if GetActiveWindowCaption = 'Nero Bitti' then
begin
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
- Timer koyarken dikkat edeceğin bir hususu bildrmek isterim.
- Örneğin Interval 1 saniye diyelim. Kullanıcı Nero'nun diyaloğuna onay verene kadar veritabanına her saniye için mükerrer kayıt söz konusu olacaktır. Bunu da göz önünde bulundurarak kontroller eklemelisin.
- Kontrollerin tutarlı olmalı. Mesela kayıt bittikten itibaren veritabanına kayıt düşüldükten sonra en az 1 CD yazacak kadar süre dikkate aldrmayabilirsin. Bu sefer de başka sorun ortaya çıkar, 10 MB'lık bir kayıt ile 700 MB'lık bir kayıt süresini aynı kefeye koyamayacağından daha düşük bir süre denetimi yapmış olman lazım.
- Bu da bilgisayar başında beklemek istemeyip ayrılan kullanıcının gelmediği her bu peryod için mükerrer kayıt demektir.
- Tabii bu diyalog penceresini kapatma işini kullanıcıya bırakmayıp senin programın tarafından kapatılmasını sağlamak çözüm olabilir.
- Aslında Timr ile değil de varsa eğer NERO'nun ihraç ettiği bir mesaja göre tetiklenebilirsin. Bunu araştırmak lazım.
- Örneğin Interval 1 saniye diyelim. Kullanıcı Nero'nun diyaloğuna onay verene kadar veritabanına her saniye için mükerrer kayıt söz konusu olacaktır. Bunu da göz önünde bulundurarak kontroller eklemelisin.

- Kontrollerin tutarlı olmalı. Mesela kayıt bittikten itibaren veritabanına kayıt düşüldükten sonra en az 1 CD yazacak kadar süre dikkate aldrmayabilirsin. Bu sefer de başka sorun ortaya çıkar, 10 MB'lık bir kayıt ile 700 MB'lık bir kayıt süresini aynı kefeye koyamayacağından daha düşük bir süre denetimi yapmış olman lazım.
- Bu da bilgisayar başında beklemek istemeyip ayrılan kullanıcının gelmediği her bu peryod için mükerrer kayıt demektir.

- Tabii bu diyalog penceresini kapatma işini kullanıcıya bırakmayıp senin programın tarafından kapatılmasını sağlamak çözüm olabilir.
- Aslında Timr ile değil de varsa eğer NERO'nun ihraç ettiği bir mesaja göre tetiklenebilirsin. Bunu araştırmak lazım.

ya bi kaç deneme yaptım ama dediğin gibi sonuç alabiliyorummrmarman yazdı:- Timer koyarken dikkat edeceğin bir hususu bildrmek isterim.
- Örneğin Interval 1 saniye diyelim. Kullanıcı Nero'nun diyaloğuna onay verene kadar veritabanına her saniye için mükerrer kayıt söz konusu olacaktır. Bunu da göz önünde bulundurarak kontroller eklemelisin.![]()
- Kontrollerin tutarlı olmalı. Mesela kayıt bittikten itibaren veritabanına kayıt düşüldükten sonra en az 1 CD yazacak kadar süre dikkate aldrmayabilirsin. Bu sefer de başka sorun ortaya çıkar, 10 MB'lık bir kayıt ile 700 MB'lık bir kayıt süresini aynı kefeye koyamayacağından daha düşük bir süre denetimi yapmış olman lazım.
- Bu da bilgisayar başında beklemek istemeyip ayrılan kullanıcının gelmediği her bu peryod için mükerrer kayıt demektir.![]()
- Tabii bu diyalog penceresini kapatma işini kullanıcıya bırakmayıp senin programın tarafından kapatılmasını sağlamak çözüm olabilir.
- Aslında Timr ile değil de varsa eğer NERO'nun ihraç ettiği bir mesaja göre tetiklenebilirsin. Bunu araştırmak lazım.
kişi eğer hemen kapatmassa neroyu sürekli kayıt işliyor ben timer i kapatsam bir süre hemen arkasına bir kayıt daha yapılsa o kaçıyor
bir mantık bulamadım
internetten neronun API lerini buldum ama ne yapabileceğim konusunda bir fikrim yok daha önce Api lerle uğraşmadım türkçe kaynak da yok denecek kadar az
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
- NERO'nun varsa ihraç ettiği Windows Mesajı onu araştırmaya devam et. Diğer türlü çıkış noktan şu olsun: NERO'da kayıt bitişini nasıl bir mesaj penceresinden alıyorsan, kayıt başlangıcını da benzer metodla alabilirsin. Şöyle özetleyim...
- GLOBAL bir BOOLEAN değişkenin olsun. xKAYIT diyelim. Veritabanına kayıt düşmeden önce xKAYIT değeri kontrol edilsin. Aşamalar şöyle olsun.
- Kullanıcı kayıt işlemi başlattığında xKAYIT False ise True değeri alsın.
- Nero'nun Kayıt Tamamlandı mesajıyla xKAYIT değeri kontrol edilsin ve eğer True ise kayıt düşülsün ve hemen xKAYIT değeri False yapılsın. Timer işlemeye devam etse de bir dahaki kayıt başlangıcına kadar xKAYIT değeri false kalacağından bu işlem mükerrer kaydı engelleyecektir.
- Tabii ekleyeyim, kayıt sürüyorken xKAYIT değeri TRUE olacağından bu esnada timer'da yapacağın kontrolde (KAYIT BİTTİ MESAJ penceresi açık) AND (xKAYIT = TRUE) kontrolünü birlikte yapmayı ihmal etmeyesin. Yoksa Timer tek başına xKAYIT'ı kontrol ederse bu kontrolün anlamı kalmaz değil mi
- GLOBAL bir BOOLEAN değişkenin olsun. xKAYIT diyelim. Veritabanına kayıt düşmeden önce xKAYIT değeri kontrol edilsin. Aşamalar şöyle olsun.
- Kullanıcı kayıt işlemi başlattığında xKAYIT False ise True değeri alsın.
- Nero'nun Kayıt Tamamlandı mesajıyla xKAYIT değeri kontrol edilsin ve eğer True ise kayıt düşülsün ve hemen xKAYIT değeri False yapılsın. Timer işlemeye devam etse de bir dahaki kayıt başlangıcına kadar xKAYIT değeri false kalacağından bu işlem mükerrer kaydı engelleyecektir.
- Tabii ekleyeyim, kayıt sürüyorken xKAYIT değeri TRUE olacağından bu esnada timer'da yapacağın kontrolde (KAYIT BİTTİ MESAJ penceresi açık) AND (xKAYIT = TRUE) kontrolünü birlikte yapmayı ihmal etmeyesin. Yoksa Timer tek başına xKAYIT'ı kontrol ederse bu kontrolün anlamı kalmaz değil mi

yani benim sürücüye ulaşılamadığı anları kontrol etmem eğer ulaşılamıyorsa bir kayıt işlemem ulaşılıyorsa işlemem lazımmrmarman yazdı:@tuanna
- Nero normal erişim için kayıt sırasında sürücüye erişime izin vermiyor istersen bunu kullanabilirsin.
peki sürücüye erişim kurulup kurulamadığını nasıl kontrol edeceğim
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
@kuntay
- Sana daha önce bildirdiğim metodu denemeden başka çözümler araman sağlıklı olmaz. İlla ki merak ediyorsan deneme yanılma yapacaksın. Her aşamada CD'ye erişmek için Try Except bloğu ile tetik işlem yürütüp dönen hatanın koduna bakacaksın. Bu kod numarasına göre işlem ile eşleştirip anlam kazandırıp uygulamanda kullanacaksın.
- Sana daha önce bildirdiğim metodu denemeden başka çözümler araman sağlıklı olmaz. İlla ki merak ediyorsan deneme yanılma yapacaksın. Her aşamada CD'ye erişmek için Try Except bloğu ile tetik işlem yürütüp dönen hatanın koduna bakacaksın. Bu kod numarasına göre işlem ile eşleştirip anlam kazandırıp uygulamanda kullanacaksın.
Bir fikir vermesi açısından bende basit birşey yazdım. FindWindow apisini kullanarak nero burning rom handlelerine ulaşabiliriz. Programda Class ve Captionları da dinamik yaptım, bu sayede diğer nero sürümleri içinde bir problem olmaz sanırım. Benim kullandığım nero sürümü v7.0.1.4.

Classname= "NERO_BURNING_ROM Class NG"
Mesaj penceresinin başlığı = "Nero Burning ROM"
Source Code http://rapidshare.com/files/5974890/NeroLog.zip.html

Classname= "NERO_BURNING_ROM Class NG"
Mesaj penceresinin başlığı = "Nero Burning ROM"
Kod: Tümünü seç
unit Unit1;
interface
uses
StrUtils, IniFiles, ShellApi, DateUtils,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Timer1: TTimer;
GroupBox1: TGroupBox;
ListBox1: TListBox;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function FF_Ini(what: string; buff: string; secti: string; key: string; ppIniFileName: string): string;
var
Form1: TForm1;
xKayit: Boolean = TRUE;
xClassName: PChar;
xCaption: PChar;
implementation
{$R *.dfm}
function FF_Ini(what: string; buff: string; secti: string; key: string; ppIniFileName: string): string;
var
WinIni: TIniFile;
WinIniFileName: array[0..MAX_PATH] of char;
ExePathh: string;
begin
Result := '';
ExePathh := ExtractFilePath(Application.ExeName);
StrPCopy(WinIniFileName, ExePathh + ppIniFileName);
WinIni := TIniFile.Create(WinIniFileName);
if what = 'Oku' then begin
try
Result := WinIni.ReadString(secti, key, '')
finally
WinIni.Free;
end;
end
else begin
try
WinIni.WriteString(secti, key, buff);
finally
WinIni.Free;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SendMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FF_Ini('Yaz', Edit1.Text, 'Option', 'ClassName', 'Option.ini');
FF_Ini('Yaz', Edit2.Text, 'Option', 'Caption', 'Option.ini');
StrDispose(xClassName);
xClassName := StrAlloc(Length(Edit1.Text) + 1);
StrPCopy(xClassName, Edit1.Text);
StrDispose(xCaption);
xCaption := StrAlloc(Length(Edit2.Text) + 1);
StrPCopy(xCaption, Edit2.Text);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Edit1.Text := FF_Ini('Oku', '', 'Option', 'ClassName', 'Option.ini');
Edit2.Text := FF_Ini('Oku', '', 'Option', 'Caption', 'Option.ini');
xClassName := StrAlloc(Length(Edit1.Text) + 1);
StrPCopy(xClassName, Edit1.Text);
xCaption := StrAlloc(Length(Edit2.Text) + 1);
StrPCopy(xCaption, Edit2.Text);
try
ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName) + 'NeroLogs.log');
except
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
nero_hWnd: hWnd;
begin
nero_hWnd := Findwindow(xClassName, 0);
if nero_hWnd <> 0 then begin
nero_hWnd := Findwindow(0, xCaption);
if nero_hWnd <> 0 then begin
if xKayit then begin
ListBox1.Items.Add(DateToStr(date) + ' - ' + TimeToStr(now));
ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName) + 'NeroLogs.log');
xKayit := FALSE;
end;
end else begin
xKayit := TRUE;
end;
end else begin
xKayit := TRUE;
end;
end;
end.