Ağ Bağlantıları Dialog Kutusu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
internette araştırma yaparken bir program indirdim delphi'de yazılmış. 3 tane proje var içinde. incelemeye çalıştım ama anlamadım. rica etsem bana ne yaptığını anlatır mısınız?. .zip formatında 71 kb yer kaplıyor ve kodlar uzun. kodları mı göndereyim yoksa .zip dosyasını mı? dosyayı gönder derseniz nereye nasıl göndereyim?
kolay gelsin....
kolay gelsin....
Merhabalar....
- Konuyla ilgili size çözüm üretti mi ? Yani derleyip çalıştırdınız ve istediğiniz bilgileri size sundu mu
- Cevap evet ise en güzeli kaynak araştırması adına bulduğunuz sayfanın linkini ve/veya internette bir yere koyup bu yeni linki yazarsanız. bu başlığı gören birden fazla kişi analiz edebilir ve gözden kaçabilecek ayrıntılar da keşfedilmiş olur...
- Konuyla ilgili size çözüm üretti mi ? Yani derleyip çalıştırdınız ve istediğiniz bilgileri size sundu mu

- Cevap evet ise en güzeli kaynak araştırması adına bulduğunuz sayfanın linkini ve/veya internette bir yere koyup bu yeni linki yazarsanız. bu başlığı gören birden fazla kişi analiz edebilir ve gözden kaçabilecek ayrıntılar da keşfedilmiş olur...

Mrmcop bu kodlar için çok teşekkür ederim. Ama bir sorunum var.
Program çalışınca buldugu microsoft Windows Network.
Benim istegim ise microsoft windows network altında 20 tane domain var. bunlarda sadece bana ait olanı ANKARA isimli domain. Ankara altındaki cleint ları nasıl gösterebilrim. (diğer domainlerin gözükmesine gerek yok.)
Program çalışınca buldugu microsoft Windows Network.
Benim istegim ise microsoft windows network altında 20 tane domain var. bunlarda sadece bana ait olanı ANKARA isimli domain. Ankara altındaki cleint ları nasıl gösterebilrim. (diğer domainlerin gözükmesine gerek yok.)
Merhabalar...
- Ben WindowsME kullandığımdan registry kayıtlarından WorkGroup bilgisine ulaşıyor ve işlerimi halledebiliyordum...
- WinXP işletim sisteminde WorkGroup listesi bahsettiğiniz şekilde (microsoft Windows Network) geliyor...
- Yine de gerçek WorkGroup adını biliyorsanız fonksiyona girip bu gruptaki ağa login olmuş bilgisayarların listesini görebilirsiniz...
- Size bilgisayarların yanı sıra paylaştırılmış kaynakları (klasör, yazıcı vb.) da listeleyen başka bir örnek sunmak isterim... Yine Internetten derlenmiştir.
http://divxturk.divxforever.com/files/g ... aklari.zip
- Ümit ederim, işinize yarayacaktır....
- Ben WindowsME kullandığımdan registry kayıtlarından WorkGroup bilgisine ulaşıyor ve işlerimi halledebiliyordum...

- WinXP işletim sisteminde WorkGroup listesi bahsettiğiniz şekilde (microsoft Windows Network) geliyor...

- Yine de gerçek WorkGroup adını biliyorsanız fonksiyona girip bu gruptaki ağa login olmuş bilgisayarların listesini görebilirsiniz...
- Size bilgisayarların yanı sıra paylaştırılmış kaynakları (klasör, yazıcı vb.) da listeleyen başka bir örnek sunmak isterim... Yine Internetten derlenmiştir.
http://divxturk.divxforever.com/files/g ... aklari.zip
- Ümit ederim, işinize yarayacaktır....
teşekkürler ilgine. Bende tr yerine en yüklü ama dedigim hatayı veriyor. Ama ben biraz daha cırmalayım bakalım.
Bu arada daha önceki yazdıgınız kodu halen değişik denemeler yapmama ragmen malesef olmuyor. function da gerekli değişiklikleri yapmamaı söylemiştiniz. Ama Xp de hangi api leri kullandıgını bir türlü bulamadım.
Me de vnetsup ile bulabiliyorsunuz ama xp de ne kullanmam gerektigini bir türlü bulamadım.
Bu arada daha önceki yazdıgınız kodu halen değişik denemeler yapmama ragmen malesef olmuyor. function da gerekli değişiklikleri yapmamaı söylemiştiniz. Ama Xp de hangi api leri kullandıgını bir türlü bulamadım.
Me de vnetsup ile bulabiliyorsunuz ama xp de ne kullanmam gerektigini bir türlü bulamadım.
ilk sayfadaki turbopower shelltreeview komponentini denedinizmi?
viewtopic.php?p=10692#10692
viewtopic.php?p=10692#10692
.-.-.-.-.-.-.-. ^_^
Evet kullandım onu. Ama 20 domainli bir network de son kullanıcı için biraz zor olur gibi yanlış domainlere girebilme olasılıgı olur.
shelltreeview da ilk çalışma anında direk olarak kendi domainime atama şansım varmı ?
biraz inceledim ama sadece root kısmında ki seçenekleri gördüm.
Buda Xp gibi işletim sistemlerinde son kullanıcıya biraz sıkıntı yaratır gibi.
Nt olsa bir problem yok
Ayrıca shelltreeview da istedigim cleinta select yoluyla map olabilme şansı verebiliyrmu ona daha bakmadım.
shelltreeview da ilk çalışma anında direk olarak kendi domainime atama şansım varmı ?
biraz inceledim ama sadece root kısmında ki seçenekleri gördüm.
Buda Xp gibi işletim sistemlerinde son kullanıcıya biraz sıkıntı yaratır gibi.
Nt olsa bir problem yok

Ayrıca shelltreeview da istedigim cleinta select yoluyla map olabilme şansı verebiliyrmu ona daha bakmadım.
- Önceki kodlarımı tekrar inceledim... Neden çalışmadıkları hakkında kuşkularım vardı, umarım doğru sonuçlardır...
- Aşağıdaki kodu içeren projeyi aşağıdaki linkten indirip bir dener misin ?
http://divxturk.divxforever.com/files/g ... klari2.zip
- Yukardaki linkteki örnekte aşağıdaki kod uygulandı... Download edip dene ve ComboBox içerisinde Domain olarak isimlendiridiğin WorkGroup listesini görüp görmediğini, listede Ankara olup olmadığını kontrol edip, ComboBox'tan seçeceğin ANKARA ile Button2'ye basınca bilgisayarları görebiliyor musun incele...

- Aşağıdaki kodu içeren projeyi aşağıdaki linkten indirip bir dener misin ?
http://divxturk.divxforever.com/files/g ... klari2.zip
- Yukardaki linkteki örnekte aşağıdaki kod uygulandı... Download edip dene ve ComboBox içerisinde Domain olarak isimlendiridiğin WorkGroup listesini görüp görmediğini, listede Ankara olup olmadığını kontrol edip, ComboBox'tan seçeceğin ANKARA ile Button2'ye basınca bilgisayarları görebiliyor musun incele...

Kod: Tümünü seç
// 1 Adet ComboBox : ComboBox1
// 1 Adet ListBox : ListBox1
Var
WorkgroupCount : Integer;
Workgroup : Array[1..50] of String;
Computer : Array[1..100] of String;
ComputerCount : Integer;
procedure TForm1.FindAllWorkgroups;
Var
EnumHandle, hEnum2 : THandle;
Buf, aBuf2 : Array[0..100] of TNetResource;
BufSize : DWORD;
Entries, iEntries2 : DWORD;
i, j : Integer;
begin
try
if WnetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nil, EnumHandle) <> NO_ERROR
then exit;
BufSize := sizeof(Buf);
Entries := 64;
while WNetEnumResource(EnumHandle, Entries, @Buf[0], BufSize) = NO_ERROR do
begin
for i := 0 to (Entries-1) do
begin
if ((Buf[i].dwUsage and RESOURCEUSAGE_CONTAINER) = RESOURCEUSAGE_CONTAINER)
and
(pos(UpperCase('Microsoft Windows'), UpperCase(string(Buf[i].lpRemoteName))) = 1) then
begin
try
if WnetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Buf[i], hEnum2) <> NO_ERROR then
begin
exit;
end;
BufSize := sizeof(aBuf2);
iEntries2 := 64;
while WNetEnumResource(hEnum2, iEntries2, @aBuf2[0], BufSize) = NO_ERROR do
begin
for j := 0 to (iEntries2 - 1) do
begin
Inc( WorkgroupCount );
Workgroup[WorkgroupCount] := string(abuf2[j].lpRemoteName);
ComboBox1.Items.Add(Workgroup[WorkgroupCount]);
end;
iEntries2 := 64;
end;
finally
WNetCloseEnum(hEnum2);
end;
end;
end;
Entries := 64;
end;
finally
WnetCloseEnum(EnumHandle);
end;
end;
procedure TForm1.FindAllComputers(Workgroup : String);
Var
EnumHandle : THandle;
WorkgroupRS : TNetResource;
Buf : Array[1..500] of TNetResource;
BufSize : DWORD;
Entries : DWORD;
Result : Integer;
begin
ComputerCount := 0;
Workgroup := Workgroup + #0;
FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
With WorkgroupRS do begin
dwScope := 2;
dwType := 3;
dwDisplayType := 1;
dwUsage := 2;
lpRemoteName :=@Workgroup[1];
end;
WNetOpenEnum( RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
@WorkgroupRS,
EnumHandle );
Repeat
Entries := 1;
BufSize := SizeOf(Buf);
Result := WNetEnumResource(EnumHandle, Entries, @Buf, BufSize);
If (Result = NO_ERROR) and (Entries = 1) then
begin
Inc(ComputerCount);
Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);
end;
Until (Entries <> 1) or (Result <> NO_ERROR);
WNetCloseEnum( EnumHandle );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FindAllWorkGroups();
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
Sayac : Integer;
begin
FindAllComputers(ComboBox1.Items[ComboBox1.ItemIndex]);
For Sayac := 1 to ComputerCount do ListBox1.Items.Add(Computer[Sayac]);
end;
selam mrcomp
evet şimdi istedigim oldu. bir iki değişiklik yaparak kullanıcı hatalarınıda azalttım.
Ör. combobox da String kısmına sadece kendi domainimi koydum.
sadece bir problemim kaldı. oda yazdıgınız kod da makine isimlerinin başındaki // işaretlerini kaldırmam lazım. Nerden buldugunu bir bulabilirsem.
tekrar teşkkür ederim mrcomp
evet şimdi istedigim oldu. bir iki değişiklik yaparak kullanıcı hatalarınıda azalttım.
Ör. combobox da String kısmına sadece kendi domainimi koydum.

sadece bir problemim kaldı. oda yazdıgınız kod da makine isimlerinin başındaki // işaretlerini kaldırmam lazım. Nerden buldugunu bir bulabilirsem.
tekrar teşkkür ederim mrcomp
Problemimin çözümünü şu şekilde bir yere kadar çözdüm
ilk 3 harfi alıyor. Fakat 3 harfden sonrası rakam içermektedir.
mesala ank5689ank
burdaki ilk ank yı alıyor. Fakat rakama gelince 56 yerine 00 yazıyor
bu nedendir acaba ?
Kod: Tümünü seç
procedure TForm1.Edit1Change(Sender: TObject);
var
al : shortstring;
begin
al := listbox1.Items[ind]; //ind publicde string bir ifadedir
edit1.Text := al[3]+al[4]+al[5]+al[6]+al[7]al[8];
mesala ank5689ank
burdaki ilk ank yı alıyor. Fakat rakama gelince 56 yerine 00 yazıyor
bu nedendir acaba ?
Merhaba... Çözüldüğüne sevindim...
- Burada Edit1'in onChange eventine değil onExit gibi işlem sonu olaylarından birine konmasında fayda var...
- Çünkü Edit1Change olayında yaptığım her atama yeninden change olayı meydana getiriyor ve paradoksa sebep olur...
- Ek olarak kodda yapmak istediğin şeyi yanlış ifade etmişsin...
mesela ind değikeni Public bir değişken olabilir ama String olamaz. Herhalde yanlışlıkla yazdın...
- Eğer Edit1'in içeriğinde hangi makine için sorgu yapıldığını yansıtmak istiyorsan bunu listbox'un OnClick olayı ile OnKeyPress veya OnKeyUp olayında yap. Aşağıdaki kodu dene istersen ...
gibi bir ifade kullanırsan, ListBox üzerinde tıklanan satırın makina adını çekmiş olursun...
- Çalışmalarında başarılar...
- Burada Edit1'in onChange eventine değil onExit gibi işlem sonu olaylarından birine konmasında fayda var...
- Çünkü Edit1Change olayında yaptığım her atama yeninden change olayı meydana getiriyor ve paradoksa sebep olur...
- Ek olarak kodda yapmak istediğin şeyi yanlış ifade etmişsin...
mesela ind değikeni Public bir değişken olabilir ama String olamaz. Herhalde yanlışlıkla yazdın...
- Eğer Edit1'in içeriğinde hangi makine için sorgu yapıldığını yansıtmak istiyorsan bunu listbox'un OnClick olayı ile OnKeyPress veya OnKeyUp olayında yap. Aşağıdaki kodu dene istersen ...
Kod: Tümünü seç
If ListBox1.ItemIndex >= 0 then // kontrol adına
begin
Edit1.Text := Copy(ListBox1.Items[ListBox1.ItemIndex], 4, 999);
end;
gibi bir ifade kullanırsan, ListBox üzerinde tıklanan satırın makina adını çekmiş olursun...
- Çalışmalarında başarılar...
@Armani
Merhabalar... Sorunu geç gördüm... Tabii ki mümkün...
- Bilgisayar isimlerinin bulunduğu procedure FindAllComputers isimli olanı olduğunu görmüştük...
- Gördüğün üzere Bilgisayar isimleri lpRemoteName ile alınıyor. lpComment'i de işleme alırsan bunun içinde de istediğin bilgisayar description'una erişebilirsin... Örnek olsun diye aşağıdaki kodu eskisinin üzerine kopyala/yapıştır yaparsan kolayca göreceksin...
Eski Kod...
Yeni Kod...
- Çalışmalarında başarılar...
Merhabalar... Sorunu geç gördüm... Tabii ki mümkün...
- Bilgisayar isimlerinin bulunduğu procedure FindAllComputers isimli olanı olduğunu görmüştük...
- Gördüğün üzere Bilgisayar isimleri lpRemoteName ile alınıyor. lpComment'i de işleme alırsan bunun içinde de istediğin bilgisayar description'una erişebilirsin... Örnek olsun diye aşağıdaki kodu eskisinin üzerine kopyala/yapıştır yaparsan kolayca göreceksin...
Eski Kod...
Kod: Tümünü seç
If (Result = NO_ERROR) and (Entries = 1) then
begin
Inc(ComputerCount);
Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);
end;
Kod: Tümünü seç
If (Result = NO_ERROR) and (Entries = 1) then
begin
Inc(ComputerCount);
Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName) + ' - ' + StrPas(Buf[1].lpComment);
end;