uzaktan yardım için mouse kontrol??

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

uzaktan yardım için mouse kontrol??

Mesaj gönderen unicorn64 »

merhaba arkadaşlar. bi uzaktan yardım programı hazırlamam gerek. birçok tanıdığım bilgisayarında sorun olduğunda bana gelio sağolsun ama her zaman yanlarında olamıyorum ve uzaktan erişip yardım etmem gerek. ama M$ un uzak masaustunu kullanamıyorum çunku port yonlendirmesi vs gibi sorunlar var ve karşı taraf bu konuda bilgisiz.

bende kendi ihtiyaçlarımı karşılayacak şekilde bi program hazırlayayım diyorum. reverse connection yaparak da port yonlendirmeden kurtulmuş olcam. şimdi ekran görüntüsünü almak kolay belki ama mouse kontrolunu nasıl yapacağımı bilemedim.

yani mouse nin konumunu ayarlarım belki ama tıklamasını nasıl sağlarım bilemedim. yani mouse a tam hakim olmam lazım. bu konuda yardımcı olabilirmisiniz?
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

peki windowsa nasıl mesaj gönderebileceğim konusunda yardımcı olabilirmisiniz. mouse un sol tuşuna basılmış gibi işlem görmesini istiyorum ve sanırım bu da windows a mesaj göndererek mümkün..???
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam..

- Aşağıdaki şekilde bir kurulum işini görecektir. SetCursorPos fonksiyonu ile mouse'u dilediğin koordinata konumlandırabilirsin. Geriye sahipsiz bir mouse olayı yayınlamak kalıyor. Onu da Mouse_event fonksiyonu ile yapabilirsin.

Kod: Tümünü seç

var
  Pt: TPoint;
begin
  Pt.X := 100;
  Pt.Y := 100;
  SetCursorPos(Pt.X, Pt.Y);
  Mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
  Mouse_event( MOUSEEVENTF_LEFTUP,   0, 0, 0, 0 );
end;
- Denemek için en güzel uygulama, Windows Paint'dir. Paint'i aç ve Delphi'den mouse koordinatlarıyla oynarak paint'deki açık boş beyaz alanda dilediğin yerde dilediğin çizimi yaptırarak çalışma yap. :wink:

- Mesela aşağıda bir noktada mouse basılı hale getiriyoruz, diğer noktada basılı olayını kaldırıyoruz... Paint bu iki nokta arasında çizim yapıyor...
:lol:

Kod: Tümünü seç

var
  Pt: TPoint;
begin
  Pt.X := 100;
  Pt.Y := 100;
  SetCursorPos(Pt.X, Pt.Y);
  Mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
  SetCursorPos(Pt.X+10, Pt.Y+20);
  Mouse_event( MOUSEEVENTF_LEFTUP,   0, 0, 0, 0 );
end;
gibi...
- Afiyet olsun :o
Resim
Resim ....Resim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

ilginize ve güzel örneğinize teşekkürler :lol:

ancak ekran görüntüsünü almanın mouse dan daha kolay olacağını sanarken bi türlü onu halledemedim. forumdaki konuyla ilgili mesajları inceledim ancak pek bişey çıkaramadım. elimdeki kitaptan indy ile alakalı örneği yaptım. text dosya gönderirken prk sorun yok gibi ama ekranın resmini aldıktan sonra göndermede problem oldu. lokalde bi denedim. 3.47 mb olan ekran resmi server a 1 gb evet 1 gb olarak geldi :lol: yani gelir gibi yaptı ama içi boş tabiki.

server.pas

Kod: Tümünü seç

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
dosya:TFileStream;yol:AnsiString;
begin
//if SaveDialog1.Execute Then
//begin
//yol:=SaveDialog1.FileName;
//end;
dosya:=TFileStream.Create('ekran.bmp',fmCreate);//Oluştur
StatusBar1.Panels[0].Text:='Dosya Alınıyor';
AThread.Connection.ReadStream(dosya);//dosyaya aktar
StatusBar1.Panels[0].Text:='Dosya alımı Tamamlandı';
end;
client.pas

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
resim:tbitmap;
dosya:TFileStream;
yol:AnsiString;
begin
resim:=TBitmap.Create;
resim:=GetScreenShot;
resim.SaveToFile('ekran.bmp');
{if OpenDialog1.Execute Then
begin
yol:=OpenDialog1.FileName;
end;}
dosya:=TFileStream.Create('ekran.bmp',fmOpenRead);//var olanı kullan
boyut:=dosya.Size; //dosyanın uzunluğu
StatusBar1.Panels[1].Text:=IntToStr(boyut);
IdTCPClient1.Connect(); //bağlan
IdTCPClient1.WriteStream(dosya);//akışa al
resim.Free;
end;

bu kitapta verilen basit bi örnekti. üzerinde uygun olcak şekilde basit değişiklikler yaptım. çalışırsa asıl istediğim şekle getiririm dedim ama nafile :(
bu dosya transfer olayı ne berbat bişeymiş yaa.... ben mi yanlış yapıom bi yerlerde mantık nedir, nasıl olcak bu iş.

serversocket/clientsocket le deneyeyim dedim ama o da stream yazabilirken stream okunamıyo.... readbuf diom yemiyo off offf
Cevapla