Tam Sürümünü Görmek İçin : Projemi tamamladım nasıl buldunuz?(windows ayarları)
Merhabalar formdaş arkadaşlar;
Ne zamandır forumumuzda bir çok arkadaşın ve Ali hocanın Makalelerini okudum okudum... ama severek Hepsine teşekkürler.
Bu gün bu bilgilerin ışında ve de değerli ALİ hocanın önerileri ile geliştirmiş olduğum projemi tamamladım.
Kaynak kodlarıda Ali hocanın onayından geçti ve programı yayınladım.
Program Windows XP ve Üzeri İşletim sistemlerinde Windows Kayıt kütüğünde çeşitli ayar yapabilmekte özelleştirebilmekte.
Şuanki Web adresi: http://www.kapikaya.com/Shurzanop
Tanımı:
----------------------------------------------------------------------
Adı: SHURZANOP
Sürüm 1.0
Boyut :810 kbyte
Lisansı: Ücresiz
İşletim sitemi: Windows XP / 2003 / Vista
Dili: Türkçe
Üretici: Yaşar AKTAŞ
Email: AktasYasar@hotmail.com
SHURZANOP ile; MicroSoft sorgulamasını kapatabilir, Bilgisayarınızın yeniden başaltıldığında dosya görümlerini hatırlaması sağlanabilir, Mouse sağ kilik menüsüne bir çok seçenek ekleyebilir, İnternet Explorer ayarlarını özelleştirebilir, Windows'un geriplanda çalışan Servislerini yönetebilir, Bilgisayarınızda olan oturum hesapların başlatma şekillerini özelleştirebilir, Sisteminize bağlı Disk sürücülerini dikkatsiz kullanıcıların gözünden uzak tutmak amacıyla gizleyebilir ve Windows'un gizli uygulamarına kolayca erişmenizi sağlayabilmek gibi ve daha bir çok özellikleri ile kullanıcı hedef kitlesine yönelik geliştirilmiş yerli yazılımdır.
Örneğin:
"Hesaplar" penceresinde tüm hesapları görebilir diledğiniz hesabı 'Hoşgeldiniz' karşılama ekranından gizleyebilirsiniz,
"Sürücüler" penceresinde Sisteminizde aktif disk sürücülerin teknik özellikleri ile tüm listesini görebilir isterseniz dilediğiniz sürücüyü dikkatsiz kullanıcıların gözünden uzak tutabilir gizleyebilirsizniz,
"Servisler" penceresinde MicroSoft'un izin verdikleri ve izin vermedileri de dahil olmak üzere sisteminizde tüm servislerin tam listesini görebilir diledğiniz servisi 3 değil 5 değişik şekilde çalıştırabilirsiniz ve
"Windows uygulamaları" penceresinde Windows işletim siteminizde belkide hiç rastlamadığınız saklı uygulamarın listesini görebilir dilediğini kullanabilirsiniz.
-----------------------------------------------------------------------
Öneri ve görüşlerinizi bekliyorum.
güzel bir şeye benziyor.
şu anda indiriyorum.
güzel bir websayfasını hakediyor gibi.
bu arada programin ismi nerden geliyor ?
Birçok işlevin ek programdan erişilmesi mantığı güzel olmuş. Ama programı incelemedim. Açıkçası güvenip kuramadım. Arkada neler yaptığından emin olamam ki..
Birçok işlevin ek programdan erişilmesi mantığı güzel olmuş. Ama programı incelemedim. Açıkçası güvenip kuramadım. Arkada neler yaptığından emin olamam ki..
Hangi program arkadan birşeyler çevirmiyorki? Microsoft bile neler çeviriyor kimbilir?.. shurzan Projen güzel gözüküyor. Deneyeceğim...
BetulSahin
16/04/2007, 15:13
Kurup bakmadım ama verdiğin bilgilere göre kullanışlı bir programa benziyor.Eline sağlık diyelim. Programdan ziyade kodları verseydin daha çok işe yarardı sanıyorumki..
kurduktan sonra mouse'un sağ tıkındaki Gönder bölümü kayboldu. umarım yeniden başlattığımda sorun çözülür.
Kaynak kodları vermek için henüz erken ama şunu diyeyim kaynak kod 2500 satırdan oluşuyor yaptıkları aşağıdakilerin program haline getirilmiş halidir.
Size o Registry ayarlarını verebilirim
Bu ayarlar bir çok web sitesinde yayınlanmıştır
örneğin aşağıdaki linkete de aynı ayarların olduğu bir forum makalesi var
http://www.pcworld.com.tr/forum/forum_posts.asp?TID=26
Ancak:
Hesaplar, Sürücüler, Servisler ve Windows uygulamaları pencerelerindeki ayar ve Registry kodlaması bana aittir bunun registry kodlarını aynı listede göremeyeceksiniz.
Tabi yukarıdaki adresteki önekte olan Registry ayarların Programda uygulanışına ait algoritma, programın tasarımı, arayüzün tasarımı, bu program ait Sınıf tasarımı ve Sınıf Üye fonksiyonların tanımlaması bana aittir.
Yani anlıyacağınız ben o registry ayarlarını program haline getirdim.
Program ilk çalıştırıldığında bir kereliğene aşağıdaki anahtar altına ayarını yapabileceği işlemlere ait ilk durumunun yedeklemesini yapar.
HKEY_CURRENT_USER\Software\SHURZANOP\Yedekleme
Böylece herhangi bir zamanda programın ilk çalıştırıldığı ayarlara dönmenize imkan sağlar.
Bunun haricinde siz programda işlem yapmadıkça resitryde hiç bir değişiklik yapmaz siz bir değişiklik yapmış olsanız bile ilk haline geri döndürebilmeniz mümkün.
Yukarıda arkadaşın endişesine yer verecek şekilde geriplanda herhengi bir işlem yapmaz, programın güvenli ve stabil olması bakımından çok ama çok mesai harcadım.
Daha sonraları kaynak kodları üzerinde tartışma açabiliriz.
Saygılar...
Haklısın. Ne diyebilirim ki..Hangi program arkadan birşeyler çevirmiyorki? Microsoft bile neler çeviriyor kimbilir?.. shurzan Projen güzel gözüküyor. Deneyeceğim...
öncelikle tebrikler..projeni hangi dilde yazdığını ve hangi programlama aracı kullandığını öğrenebilirmiyim acaba? büyük bi ihtimalle c++ yada c# la yazmışsındır ama hangi aracı kullandığınıda merak ettim..iyi çalışmalar ve bundan sonraki çalışmalarındada başarılar..
Teşekkürler
Özür dilerim bunu belirtmeliydim
Borland C++ Builder 6
ahmetneseli
16/04/2007, 19:23
Eline emeğine sağlık. Ben şahsen çok beğendim.
acehreli
16/04/2007, 20:16
Tebrikler Yasar! Cok guzel olmus! :)
Ali
Evet yeni kurdum gerçekten hoş bir programa benziyor ancak henüz inceleme fırsatım pek olmadı olur olmaz görüş ve önerilerimi sunacağıma emin olabilirsin ;)
Oldukça kaliteli ve kullanışlı bir programa benziyor. Kararlılığın için tebrikler; programcıların en büyük derdidir bu biliyoruz ki.
[BÜYÜK ALKIŞ], daha iyisini bekliyoruz. Bu tarz programları bizimkilerden görmek çok zevkli ;)
Yorumlarınız için hepinize ayrı ayrı teşekkürler
mayis_1919
19/04/2007, 17:17
program iyiye benziyor ama farenin sağtuşuna tıklandığında gönder sekmesi vardı o kaybolmuş . nasıl geri gelir acaba.her yükleyende mi oluyor bu sorun yoksa bana mı özel.
Tebrikler.
Yalnız Sürücü Gizleme Bölümünde 3 sürücüm olmasına ragmen sadece 2 tanesi görüntülüyor bilginize...
Doğru eğer sürücüde disk yoksa göstermez Örneğin Flopy de disk yoksa A görünmez yada B ve CD-ROM da CD yoksa CD-ROM görünmez görünmeyen Sürücüye diskini takın öyle bakın.
Doğru eğer sürücüde disk yoksa göstermez Örneğin Flopy de disk yoksa A görünmez yada B ve CD-ROM da CD yoksa CD-ROM görünmez görünmeyen Sürücüye diskini takın öyle bakın.
Bendeki sürücüler ekteki resimde göreceğiniz gibidir.
yazılımda ise bu sürücülerden sadece 2 si görüntülemektedir.
Başarılı bir çalışma olmuş, tebrikler.
Gönderdiğin resime göre Sürücü gizleme penceresinde tümünü görememen için bir neden yok.
Resime göre sende C, D, E, F, G, H, I, J harflerine sahip sürücülerin var sedece J'yi mi göremiyorsun yoksa C ve D dışındakilerini mi göremiyorsun?
Bunu tam anlıyamadım.
İşin gerçeği disk olupta görmemesi mümkün değil ama program diski okuyamamış gibi bir durum olabilir disk hatalı gibi bir şey değilse mutlaka görmesi gerekirdi hem neden Sürücüler penceresine ait resminide göndermedin ki?
O zaman daha doğru karar verebilirdik.
Gönderdiğin resime göre Sürücü gizleme penceresinde tümünü görememen için bir neden yok.
Resime göre sende C, D, E, F, G, H, I, J harflerine sahip sürücülerin var sedece J'yi mi göremiyorsun yoksa C ve D dışındakilerini mi göremiyorsun?
Bunu tam anlıyamadım.
İşin gerçeği disk olupta görmemesi mümkün değil ama program diski okuyamamış gibi bir durum olabilir disk hatalı gibi bir şey değilse mutlaka görmesi gerekirdi hem neden Sürücüler penceresine ait resminide göndermedin ki?
O zaman daha doğru karar verebilirdik.
Sadece C ve D sürücülerini görebiliyorum. geri kalan e,f,g,j(ki bu HDD nin bir bolumu) goremiyorum
CompEngineer
20/04/2007, 17:32
hocam kaynak kodlarini verme sansin var mi acaba
sadece merak ettim ve bakmak istiyorum :D
"Sadece C ve D sürücülerini görebiliyorum. geri kalan e,f,g,j(ki bu HDD nin bir bolumu) goremiyorum"
Mutlaka görmesi gerekirdi bunun için bir neden yok
İstersniz Sürücülere ait fonksiyonun kaynak kodunu verebilirim sizde inceleyin görmemesi imkansız.
acehreli
20/04/2007, 19:15
shurzan, DOGUHAN'in bilgisayari imkansizi mi basardi yani? :) Debug dunyasina hosgeldin. Programci dogru oldugundan emin, ama kullanici kullanamiyor... :)
shurzan, acaba kodun yalnizca 'gercek' diskleri mi goruyor? (Ne demek istedigimden tam emin degilim. :) ) Acaba DOGUHAN'in diger suruculeri baska seylere 'mapped' mi?
Ali
Hocam doğrusu bende anlamadım okyamaması için bir neden yokki;
Fonksiyonun nasıl çalıştığını açayım istersen zaten sizde de kaynak kodlara var.
Fonksiyonun kaynak kodu aşağıda
void TForm1::Suruculer()
{
SurucuListesi->Clear(); //Tıklandığında Listeyi yeniden oluşturmak için sil
int simdiki,ind;
AnsiString SurucuHarfi;
simdiki = getdisk();
disksayisi = setdisk(simdiki); //Sistemdeki disk sayısını bul
char dosyaturu[8],Etiket[255];
unsigned long SeriNo;
unsigned long a, b;
for (int index=0;index <= disksayisi; ++index){
SurucuHarfi = Char('A'+index);
SurucuHarfi += ":\\"; //API için Harf oluştur
//Sürücü özelliklerini al
if(GetVolumeInformation(SurucuHarfi.c_str(),Etiket ,sizeof(Etiket),&SeriNo,&a,&b,dosyaturu,sizeof(dosyaturu))){
SurucuListesi->Items->Add();
ind = SurucuListesi->Items->Count-1;
SurucuListesi->Items->Item[ind]->Checked = true; //Önce hepsini işaretle
SurucuListesi->Items->Item[ind]->Caption = Char('A'+index); //Sürücü Harflerini ekle
SurucuListesi->Items->Item[ind]->SubItems->Add(Etiket);
//Sürücü Türünü belirle ekle
switch( GetDriveType(SurucuHarfi.c_str()) )
{
case 0:
SurucuListesi->Items->Item[ind]->SubItems->Add("Bilinmeyen Tip");
SurucuListesi->Items->Item[ind]->ImageIndex = 1;break;
case DRIVE_REMOVABLE:
SurucuListesi->Items->Item[ind]->SubItems->Add("Disket Sürücü");
SurucuListesi->Items->Item[ind]->ImageIndex = 2; break;
case DRIVE_CDROM:
SurucuListesi->Items->Item[ind]->SubItems->Add("CD-ROM");
SurucuListesi->Items->Item[ind]->ImageIndex = 3; break;
case DRIVE_RAMDISK:
SurucuListesi->Items->Item[ind]->SubItems->Add("RAM Disk");
SurucuListesi->Items->Item[ind]->ImageIndex = 4;break;
case DRIVE_FIXED:
SurucuListesi->Items->Item[ind]->SubItems->Add("Sabit Disk");
SurucuListesi->Items->Item[ind]->ImageIndex = 5;break;
}
SurucuListesi->Items->Item[ind]->SubItems->Add(IntToHex(int(SeriNo),8));
SurucuListesi->Items->Item[ind]->SubItems->Add(dosyaturu);
}
}
/*Sürücüler için Registry değerlerini oluştur
A=1, B=2, C=4, D=8, E=16 şeklinde*/
if(suruculer<1){
++suruculer;
surucuindexi['A'] = 1;
for(int i=1;i<= disksayisi; ++i)
//Bir öncekinin iki katı değerine sahip değerle yarat
surucuindexi[Char('A'+i)] = surucuindexi[Char('A'+(i-1))]*2;
}
Reg->RootKey = HKEY_LOCAL_MACHINE;
if (Reg->OpenKey("<A href="file://\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false">\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false))
if (Reg->ValueExists("NoDrives")) //Eğer değer varsa
{
int indx = 0;
surucudegeri = Reg->ReadInteger("NoDrives"); //Registry'yi oku
for (int x=surucudegeri; x >0;)
{
if (x%2 != 0) //Mod işleminde true ise döngüye gir
{
for (int xx=0; xx <= ind ; ++xx){ //Listelenmişler kadar döngü yap
if (SurucuListesi->Items->Item[xx]->Caption == Char('A'+indx)) //Başlıklara göre çentikleri iptal et
SurucuListesi->Items->Item[xx]->Checked = false;
}
}
x /=2;
++indx; //Harf oluşturmak için 1 arttır
}
}
}
acehreli
20/04/2007, 19:56
Sanirim getdisk ve setdisk'i yanlis kullaniyorsun.
getdisk: Su anda kullanilmakta olan disk
setdisk: Kullanilmakta olan diski degistirir
Senin programin
simdiki = getdisk();
yaptigi sirada herhalde C: secili oldugu icin sonra
disksayisi = setdisk(simdiki); //Sistemdeki disk sayýsýný bul
diyince sistemdeki disk sayisini oldugundan cok daha az saniyorsun.
Ben hic kullanmadim ama soyle kullanildigini goruyorum:
o=getdisk();
for(i=1;i<26;i++)
{
setdisk(i);
if(i==getdisk())
{
*s=i+'A';
s++;
}
}
setdisk(o);
Once o'ya su andaki disk degerini sakla. Boylece sonra tekrar dogrusunu seceriz.
Butun harfler icin setdisk yapmayi dene. Eger calisirsa i==getdisk() 0'dan farkli oluyor. O zaman o diskin var oldugunu anliyorsun.
Bir de bu mantikla dene istersen.
Ali
acehreli
20/04/2007, 20:01
Soyledigimi geri aliyorum. :) Cunku setdisk icin soyle bir sey soyluyorlar: "The highest drive actually present that the system can reference."
Yani senin dusundugun dogru olmali. Acaba "actually present" (gercekten varolan) mi isi bozuyor? Yani setdisk acaba "mapped" suruculeri dOndurmuyor mu?
Bunu denemek icin sen de once bir surucu harfi tanimla. Bak bakalim bu sorunu sen de yasayacak misin. (Reproduce the problem.) Sonra da o setdisk/getdisk yontemini dene bakalim duzelecek mi... (?)
Ali
Dikkat edilirse getdisk ve setdisk ile sürücü sayısını alıyorum
ve for ile sürücü sayısı kadar döngü yapıp "GetVolumeInformation" Windows API yi her sürücü için çağıyorum serino ve sürücü adı Dosya formatı gibi tenik bilgileri alıyorum gene aynı döngü içerisinde her sürücü için diğer Windows API GetDriveType yi çağrıp sürücü tipini belirliyorum.
Saklanması gerken sürücülerin Registry değerlerini oluşturmak için döngü kullanıyor TStrinList değişkenine atıyorum.
yalnız aşağıdaki kod parçası foruma yalnış çıkmış olmamalıydı "("<A href="file://" bu kaynak kodda yok nasıl böyle çıktı bilemiyorum. burayı dikkate almayın
if (Reg->OpenKey("<A href="file://\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false">\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false))
if (Reg->ValueExists("NoDrives")) //Eğer değer varsa
{
Yalnız
Evet hocam getdisk ve setdisk böyle kullanılıyor ama dediğin gibi API acaba doğru çalışamıyormu bunun sorumluluğu bizde olamaz MS ne yazmışsa biz kullandık.
Kod gayet açık hatalı bir yer varsa tartışalım
setdisk / getdisk Her bilgisayarda farklı çalışmaz değil mi ben API den kuşkulanıyorum
hem böyle bir soruna ilk kez karşılaşıyorum sadece bu arkadaşta çıkması biraz düşündürdü beni
Evet hocam getdisk / setdisk böyle de kullanılabiliyor setdisk'e şuandaki diskin değerini argüman olarak verirsen sana disk sayısını döndürüyor diğer durumda disk olmadığı halde 26 ya kadar döngü yapılıyor ayrıca algoritmayı geliştirirken o şekilde de denedim başka şekilde de çeşitli denemeler yaptım en uygunu aşağıdaki gibi oldu hocam
simdiki = getdisk();
disksayisi = setdisk(simdiki);
for (int index=0;index <= disksayisi; ++index){
//.....
şekinde yapıldığında disksayisi adlı değişkende disk sayısını elde ediyorsun
kendi kendine konuşmadığını söyle...
http://www.evrim.net/shurzan
Evet DOĞUHAN gördüm iyikide böyle bir eksiklik ortaya çıktı.
Sendeki duruma göre anlaşılan getdisk/setdisk ikilisi bizim için yeterli gelmiyor çünkü getdisk/setdisk eski yazılmış fonksiyonlardır ve USB ile bağlı RAM bellekleri disk olarak görmüyor dolayısıla HDD den sonrasında olan farklı diskleri tanıyamadığından disk sayısını doğru veremiyordur.
Aklıma daha iyi bir fikir geldi bu fonksiyonları kullanmadan tüm kontrolü Windows'un GetVolumeInformation API ye bırakmak zaten bu API geçersiz sürücü harfi girildiğinde BOOL türünden false döndürür böylece Z sürücüsüne kadar döngü kuracağım ne varsa ona göre bilgileri versin.
Sürücüler fonksiyonunu düşündüğüm şekilde yeniden kodlayacağım ve Borland Developer Studio 2006 ile yeniden derleyeceğim sonucu sonucu yazarsan sevinirim.
Şimdi kodluyorum bitince haber veririm aynı linkten indirip denersin sanırım sorun hallolacak.
Tamam Sürücüler fonksiyonunu aşağıdaki gibi yeniden kodladım sanırım istediğimiz oldu.
getdisk ve setdiski hiç kullanmadım sanırım USB bellekleri bu fonksiyonlar tanımayabilirdi tüm kontrolü "GetVolumeInformation" API ye bıraktım döngüyü Z harfine kadar devam ettirdim GetVolumeInformation API ye bir geçersiz Sürücü harfi girildiğinde bool türünden false değer döndüreceğinden pas geçecektir.
Bir denermisin?
//---------------------------------------------------------------------------
void TForm1::Suruculer()
{
SurucuListesi->Clear(); //Tıklandığında Listeyi yeniden oluşturmak için sil
int ind;
AnsiString SurucuHarfi;
disksayisi = 26;
char dosyaturu[8],Etiket[255];
unsigned long SeriNo;
surucuindexi['A'] = 1; //map nesnesinin İlk elamanı oluştur
for (int index=0;index <= disksayisi; ++index){
SurucuHarfi = Char('A'+index);
SurucuHarfi += ":\\"; //API için Harf oluştur
//Sürücü özelliklerini al
if(GetVolumeInformation(SurucuHarfi.c_str(),Etiket ,sizeof(Etiket),&SeriNo,NULL,NULL,dosyaturu,sizeof(dosyaturu))){
SurucuListesi->Items->Add();
ind = SurucuListesi->Items->Count-1;
SurucuListesi->Items->Item[ind]->Checked = true; //Önce hepsini işaretle
SurucuListesi->Items->Item[ind]->Caption = Char('A'+index); //Sürücü Harflerini ekle
SurucuListesi->Items->Item[ind]->SubItems->Add(Etiket);
//Sürücü Türünü belirle ekle
switch( GetDriveType(SurucuHarfi.c_str()) )
{
case 0:
SurucuListesi->Items->Item[ind]->SubItems->Add("Bilinmeyen Türde");
SurucuListesi->Items->Item[ind]->ImageIndex = 1;break;
case DRIVE_REMOVABLE:
SurucuListesi->Items->Item[ind]->SubItems->Add("Taşınabilir Disk");
SurucuListesi->Items->Item[ind]->ImageIndex = 2; break;
case DRIVE_CDROM:
SurucuListesi->Items->Item[ind]->SubItems->Add("CD-ROM");
SurucuListesi->Items->Item[ind]->ImageIndex = 3; break;
case DRIVE_RAMDISK:
SurucuListesi->Items->Item[ind]->SubItems->Add("RAM Disk");
SurucuListesi->Items->Item[ind]->ImageIndex = 4;break;
case DRIVE_FIXED:
SurucuListesi->Items->Item[ind]->SubItems->Add("Sabit Disk");
SurucuListesi->Items->Item[ind]->ImageIndex = 5;break;
}
SurucuListesi->Items->Item[ind]->SubItems->Add(IntToHex(int(SeriNo),8));
SurucuListesi->Items->Item[ind]->SubItems->Add(dosyaturu);
}
if(surucuindexi.size() <= disksayisi-1){ //26 olmuşsa map nesnesine yeni elaman ekleme
/*Sürücüler için Registry değerlerini oluştur
A=1, B=2, C=4, D=8, E=16 şeklinde*/
//Bir öncekinin iki katı değerine sahip değerle yarat
surucuindexi[Char('A'+index)] = surucuindexi[Char('A'+(index-1))]*2;
}
}
Reg->RootKey = HKEY_LOCAL_MACHINE;
if (Reg->OpenKey("<A href="file://\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false">\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false))
if (Reg->ValueExists("NoDrives")) //Eğer değer varsa
{
int indx = 0;
surucudegeri = Reg->ReadInteger("NoDrives"); //Registry'yi oku
for (int x=surucudegeri; x >0;)
{
if (x%2 != 0) //Mod işleminde true ise döngüye gir
{
for (int xx=0; xx <= ind ; ++xx){ //Listelenmişler kadar döngü yap
if (SurucuListesi->Items->Item[xx]->Caption == Char('A'+indx)) //Başlıklara göre çentikleri iptal et
SurucuListesi->Items->Item[xx]->Checked = false;
}
}
x /=2;
++indx; //Harf oluşturmak için 1 arttır
}
}
}
//----------------------------------------------------------------------------
Bu fonksiyonu her foruma gönderdiğimde nedense fonksiyon kodları arasına kendi kendine eklentiler yazılıyor anlıyamadım gitti OpenKey içine "<A href="file://" bunu ve devamını yazmış sadece
if(Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false)) olmalıydı.
İkidir bu oluyor Forum Coder bunu görmeli bir çözüm getirmeli
C++ kodları arasında html kod parçasının olması okuyan kişiy yanıltacaktır üstelik düzeltemiyoruzda.
Bilginize bu html kod parçası fonksiyon ile alakasızdır.
if (Reg->OpenKey("<A href="file://\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false">\\Software\\Microsoft\\Windows\\CurrentVersion\\Po licies\\Explorer",false))
if (Reg->ValueExists("NoDrives")) //Eğer değer varsa
{
Tebrik ederim shurzan (http://forum.ceviz.net/member.php?u=18257) elinize sağlık çok güzel ve kullanışlı bir program olmuş.
Kurulum esnasında işlemciyi biraz fazla kastırıyor nedense, birde kurulum gerektirmese, doğrudan çalışan .exe dosyası olsa daha çok sevilir gibime geliyor :)
Tekrar tebrikler, kolay gelsin.
programı kullandıktan sonra sağ tuş gönder menüsü (SendTo) kayboldu.
Kayıt defteri ve gpedit.msc `de aramama rahmen gerekli ayarı bulamadım.
Acaba bileniniz var mı?
Neyse bir vb kodu buldum düzeldi.
Fakat programda böyle bir ayar olmamasına rağmen özelliği kapattı !
bulduğum xp_sendtodesktop.vbs dosyasının içeriği
'XP_sendtodesktop.vbs - Repairs the Send To Desktop function
'© Doug Knox - 4/7/2002
'Updated 01/14/04
'Downloaded from www.dougknox.com
Set WshShell = WScript.CreateObject("WScript.Shell")
a = "HKEY_CLASSES_ROOT\CLSID\{9E56BE61-C50F-11CF-9A2C-00A0C90A90CE}\"
WshShell.RegWrite a,""
WshShell.RegWrite a & "NeverShowExt",""
b = "HKEY_CLASSES_ROOT\CLSID\{9E56BE61-C50F-11CF-9A2C-00A0C90A90CE}\InProcServer32\"
WshShell.RegWrite b ,"C:\Windows\System32\Sendmail.dll"
WshShell.RegWrite b & "ThreadingModel","Apartment"
c = "HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{9E56BE6 1-C50F-11CF-9A2C-00A0C90A90CE}\DefaultIcon\"
WshShell.RegWrite c,"C:WINDOWS\EXPLORER.exe,3"
d = "HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{9E56BE6 1-C50F-11CF-9A2C-00A0C90A90CE}\shellex\DropHandler\"
WshShell.RegWrite d,"{9E56BE61-C50F-11CF-9A2C-00A0C90A90CE}"
'Thanks to MVP Kelly for this tip
Return = WshShell.Run("REGSVR32 /S SENDMAIL.DLL")
Return = WshShell.Run("REGSVR32 /S OLE32.DLL")
Return = WshShell.Run("REGSVR32 /S /I SHELL32.DLL")
Set WshShell = Nothing
MsgBox "Send To Desktop has been fixed",4096,"Finished!"
65kb ilgin için Teşekürler bahsettiğin durum sağ klik penceresinde meydana geliyor .
"Klasöre kopyala" ve "Klasöre taşı" seçeneklerin her ikisininde çentikleri iptal edildiğinde Registry key "Copy To", "Move To" key'lerin silinmesi "Send To" key silinmemesi gerekiyordu "Send To" Key silinmeyecek şekilde kod'u düzelttim.
Bu sorundan dolayı özür dilerim eğer Gönder menüsü eksik olan arkadaş varsa 65kb arkadaşın verdiği vbs kodunu bir text dosyasına kaydedip dosyasnın uzantısınıda .vbs olarak değiştirip çalıştırılırsa sorun giderilmiş olur.
Yeniden derlenmiş Shurzanop web alanına upload edildi.
Tebrikler.
Yalnız Sürücü Gizleme Bölümünde 3 sürücüm olmasına ragmen sadece 2 tanesi görüntülüyor bilginize...
Şuan bir problem yok. Tüm sürücüler görünuyor
Bazı bölümlerde tooltip yazmamışsın eklersen güzel olur,
Ve sürücüler kısmını hızlandır çok yavaş yahu.
Projeye ilk başladığımda ufak bir çalışma olacak şekilde düşünmüştüm ancak bazı tool eklentileri düşündükçe neden olmasın bununda algoritmasını geliştireyim şunuda ekliyeyim derken proje büyüdü aslını sorarsanız böyle bir güzel bir iş çıkacağına önceden bende inanmamıştım tabi sizlerin önerileri ve Ali hocanın katkıları azımsanamaz teşekkürler.
Revlis Arkadaşımın önerisi haklı aslında her pencerede açıklamaları kısa tuttum daha ayrıntıları ile geliştirilebilir neden olmasın.
Diğer konu ise DOGUHAN arkadaşın bilgisayarında ortaya çıktı (iyikide çıktı) getdisk/setdisk fonksiyon ikilisi yetersiz kalıyor bazı donanım aygıtlarına erişemiyordu mesela USB belleklere NETWORK DISK lere erişemiyor disk sayısını yalnış veriyordu dolayısıyla döngü sayısı yanış elde edildiğinden döngü daha kısa oluyor ve daha hızlıydı.
Bu eski fonksiyonları iptal ettim ama bu durumda disk olsada olmasada 26 kez dönmek zorunda daha sonra Registry key değerleri oluşturmak için bir kereliğine gene 26 kez dönen bir döngüye giriyor sonrada okunan Registry değerine göre çentiklerini iptal etmesi için üçüncü bir döngüye giriliyor birinci ve üçüncü döngüler yapılması zorunlu fakat ikinci olan döngüyü iptal edip birinci döngü içerisinde Registry değerleri oluşturulabilir.
Dahada gelistirilebilir, önerilere açığım.
Ayrıca bu pencere dinamik çalıştığından yani pencereyi her defasında yeniden açtığında bütün sürücüler yeniden sorgulandığından CD-ROM içinde CD konulmuşsa okununcaya kadar Flopy ye Disk konulduğunda Disk okununcaya kadar pencerede bekleme olacaktır.
Her açılışında durum yeniden okunduğundan bu da ayrıca ek bir süre kaybı yapmakta ama bu gerekli.
Pencerenin dinamik durumundan vazgeçmeyi düşünmüyorum bence bu süre kaybı olmasına rağmen gerekli pencere.
Ayrıca Başka önerileriniz olursa ek özellik bir başka pencere ve başka özellik dahada geliştiribiliriz.
Saygılar.
acehreli
24/04/2007, 19:42
shurzan, projenin gittikce buyumesine ve icine bastan dusunulmeyen ozelliklerin girmesine Ingilizce'de "feature creep" deniyor. Sinsice (creep) girip projeyi gelistiriyorlar ama ayni zamanda geciktiriyorlar ve karmasiklastiriyorlar.
Ali
Not: Bu arada, bana tesekkur etmen beni onurlandiriyor ama senin bu projende ben kilimi bile kipirdatmadim ki... Tek katkim, bir kac tane yazim hatasi yakalamak oldu; hepsi o. :) Arkadaslar bundan fazlasini dusunmesinler lutfen.
sadece başlat menüsünün hızını artırmama rağmen klasik başlat menüsüne çevirdi..
merhabalar!
Bir şey daha belirtmek istiyorum; genelde bu tür programlarda çok karşılaşılıyor (windows tweak), birkaç ayar değiştirmemize rağmen çok daha fazla ayar değişmiş oluyor.
Mesela bende de windows ve oturum açma kapama sesleri tekrar açık oldu.
Acaba program hangi ayarların açık - kapalı olduğuna bakarken hata mı yapıyor.
Birde varsayılana geridön olayı, programın varsayılan kayıt defteri ayarı.
Program ilk çalıştığında gerekli ayarları yedeklese, birkaç ayar değiştirdikten sonra bu tuşa basarak geri dönmek istediğimizde, bizim eski ayarlarımıza (aldığı yedeğe) geri dönülse çok daha güzel olur bence...
Tekrar tebrikler
kolay gelsin.
Revlis işte bu mümkün değil;
Başlat menüsü ayarı MenuShowDelay değerine müdahale eder
tam yolu: "HKEY_CURRENT_USER\Control Panel\Desktop" altındadır
Klasik baştal seçeneği NoSimpleStartMenu değerine müdahale eder bu ayar ile ilgisi yok, bu ayarın tam yolu aşağıda
"HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\Explorer"
Aynı RootKey de bile bulunmaz.
Mutlaka Klasik başlat seçeneğini seçmiş olmalısın.
kontrol et.
merhabalar!
Bir şey daha belirtmek istiyorum; genelde bu tür programlarda çok karşılaşılıyor (windows tweak), birkaç ayar değiştirmemize rağmen çok daha fazla ayar değişmiş oluyor.
Mesela bende de windows ve oturum açma kapama sesleri tekrar açık oldu.
Acaba program hangi ayarların açık - kapalı olduğuna bakarken hata mı yapıyor.
Birde varsayılana geridön olayı, programın varsayılan kayıt defteri ayarı.
Program ilk çalıştığında gerekli ayarları yedeklese, birkaç ayar değiştirdikten sonra bu tuşa basarak geri dönmek istediğimizde, bizim eski ayarlarımıza (aldığı yedeğe) geri dönülse çok daha güzel olur bence...
Tekrar tebrikler
kolay gelsin.
Hayır,
Üzüldüm doğrusu burada şimdi çalışmama haksızlık yapıldığına inanmaya başladım.
Programın her penceresinin ayrı fonksiyonu ve o pencereye ait değişkeni var eğer o pencere açılmamışsa değişken değer almaz ve uygula fonksiyonunda bu değişkenin durumuna bakılır o fonksiyon çağrılmışsa değer almış ve o pencereye ait ayarlar uygulanır sadece bir ayar değişikliği ile bir çok ayar değiştirmesi diye bir şey yok bu programda yok diğerlerini bilemem. Yapmayın lütfen.
Programımda oturum sesleri açma/kapama seçeneği/ayarı yokki neyi kapattığını iyi kontrol ettin mi programda kasa içindeki Beep sesini kapat/aç var oturum seslerini aç/kapat seçenği ayarı değil bu. Alttaki açıklama metninde de bunun kasa içindeki beep sesi için olduğunu yazdım.
Ayrıca Programda gerekli ayarları zaten yedekliyor sanırım görmedin orada bir tuş var "İlk ayarlara geri dön" bu tuş ile program ilk kez çalıştırıldığında sisteminizde ilgili ayarların varlığı kontrol edilip yedekliyor "Hakkında" penceresinde de bunu açıkça yazmıştım.
Lütfen...
Beni yanlış anladınız. Ben yaptığınız işe haksızlık etmedim, zaten ilk mesajımda da çok güzel bir çalışma olduğunu belitmiştim.
Sadece, boş değil de yapıcı yorumlarda bulunmak istedim, sizde her türlü yorumda bulunun demişsiniz. Amacım sizi üzmek değildi kusura bakmayın... Şimdi ben üzüldü ya :)
Neyse durum tam olarak şu, kasa hoparlörü değilde ses kartından gelen windowsun açılış sesleri vardır ya onlar varsayılana döndü. Denetim Masası/Ses Efektleri ve Ses aygıtları özelliklerinden de ayarlanan...
Program ilk çalıştırıldığında eski kayıtları nereye yedekliyor, dosya olarak mı atıyor yoksa, kayıt defterine mi yazıyor. Galiba ben programı kaldrıdıktan sonra, tekrar kurmadan Shurzanop.exe dosyasını çalıştırdım ve "İlk ayarlara geri dön" ü tıkladım. Herhalde ondan sonra böyle oldu.
Şimdi tam olarak hangi yolu izlediğimi hatırlamıyorum, çünkü sağ tuş sendto gitmişti ona takılmıştım...
Yanlış anlaşıldıysa tekrar özür, ama her türlü yorum derken kötülerinide beklemelisiniz...
Saygılar
:)
Hayır size kızdığımdan değil her türlü yoruma gene açığım ama yalnış yorum için değil tabi kusurum varsa afola programın güvensiz miş izlenimi veriyor olman üzdü.
Evet program ilk çalıştırıldığında programın ayarlayabileceği özellikler için Registryde yedekleme yapar böyle uygun gördüm.
Örneğin programı kurdun ayarlar yaptın sonra sildin eğer bir dosyaya ayarlar yedeklenmiş olsaydı sen ve ya bir başkası yedeklenen ayar dosyasını silse/değiştirse ve ya programı kaldırdığında bu dosya silinse asla bir daha ilk ayarlara getiremeycektin sonra registryde tüm bu ayarlar için tek tek düzeltme yapacaktın tabi hangi key'de hangi value'de olduğunu biliyorsan gene iyi ya hiçbirini bilmiyorsan.... way.
Neyese ben bunu Registryde yedeklemeyi uygun gördüm programı kaldırsanda key silinmiyor (tabi siz silmedikçe) ileri bir zamanda gene programın ilk çalıştırıldığı ayarlara dönmek istersen programı çalıştırman yeterli.
Yedeklemeyi, sadece ilk kez çalıştırıldığında yapar aşağıda tam yolunu verdiğim key altında yedekleme yapılmışsa bir daha yedekleme yapmaz ve bu yedekler program tarafından bir daha değiştirilmez. Sadece okur.
Tam yolu kontrol edin:
HKEY_CURRENT_USER\Software\SHURZANOP\Yedekleme
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.