Çözüldü C# Titlebar'a ekstradan nesne nasıl eklenir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
26 Temmuz 2023
Mesajlar
4.694
Makaleler
27
Çözümler
178
Yer
Başkent
Daha fazla  
Sistem Özellikleri
HP Victus 16 S1035NT
Cinsiyet
Erkek
Meslek
Yazılımcı/Yayıncı
Başlıkta da belirttiğim gibi çok uzun süredir araştırıp bulamadığım konu.
Windows'un kendi titlebarının rengini koyu veya açık tema yapabilmeyi buldum ama ekstra nesne eklemeyi bulamadım.
Demek istediğimi daha iyi anlatabilmek için:
Örnek Technopat uygulamasının(Google) titlebarı:

1724033099608.png


Minimize box, restorebox ve cancelbox(sanırım ismi böyle değil) dışında butonlar da var hem de Windows'un kendi title barında. İnternette çoğu sitede değiştiremiyeceğimiz hakkında belirtmişler ama bir başka görsel:
Office 16 titlebarı:

1724033213215.png


Siz demeden ben söyleyim, evet Office Microsoft'un dolayısıyla Windows ayarlarını değiştirebilir ama bir başka uygulama.
Adını söylememe gerek yok ama yapımcısı Microsoft değil.

1724033312762.png


Şimdiden teşekkürler.
 
Son düzenleyen: Moderatör:
Çözüm
Hata yapmak aslında güzel bir şey bu şekilde gelişiyor insan ama her hata yaptığında o hatayı bir daha yapmama azmin müthiş inşallah istediğini elde edersin ve ilmine ilim katarsın <3
Kaliteli insan kaliteli konuşurmuş. Maşallah çok teşekkür ederim inşallah siz de istediğiniz yere gelebilirsiniz :) <3

Bu konunun son 2 sayfasında, WinUI 3 kullanarak nasıl yapılcağını buldum.

Tersine mühendislikten bende anlıyorum hatta bunu öğrendiğim zaman çok korkmuştum ve hayal kırıklığına uğradım :/ .NET ile geliştirilen uygulamaları sanki kendileri geliştirmiş gibi çok rahat erişebiliyorlar hatta bununla yetinmeyip .sln projesi olarak bile ayarlanabiliyor. O kadar emeğim çöpe giderse çok üzülürdüm Allah'tan yayınlamadan önce öğrendim. Yoksa gitmişti 1 yıllık emek. (1 yıl az gelmesin günde ortalama 6-7 saat) Yani anladığım kadarıyla API veya 3. parti yazılım kullanmadan WinUI'ı tersine mühendislikle erişebilmek; işletim sistemini baştan yazmak kadar zor mu cidden
Aslında Windows'un sistem dosyaları C ve C++ ile yazılıyor ve bu diller doğrudan makine diline çevrildiği için tersine mühendislikte assembly diline dönüştürmek zorundasın oda C# gibi bedava kaynak kod gibi bir etki yaratmıyor çoğu şey karmaşık hale geliyor bide compiler optimizasyon için farklı şeyler yaptığı için extra zor oluyor. Eğer tersine mühendislik yapılmasından korkuyorsan C# yerine C++ kullanabilirsin WinUI, WPF ve Forms hepsi C++ ile çalıştırılabilir ve tersine mühendislik yapmak gerçekten zor özellikle WinUI C++'ı için. C# CIL (Common Intermediate Language) denen bir dile dönüştürülüyor doğrudan makine diline değil bu yüzden tersine mühendislik yapmak çok kolay ama mesela Unity IL2Cpp adında bir teknoloji oluşturdu böylelikle IL kodunu C++'a dönüştürüp tersine mühendislik yapmayı zorlaştırıyor. Ek olarak eğer bilmiyorsan IL öğrenmeni tavsiye ederim yazmak için değil sadece okuyabiliyor olman yeterli bu sayede yazdığın kodun performansını gözden geçirebilirsin bu siteyi kullanabilirsin SharpLab yada program olarak LINQPad 8 var o da çok profesyonel
 
Aslında Windows'un sistem dosyaları C ve C++ ile yazılıyor ve bu diller doğrudan makine diline çevrildiği için tersine mühendislikte assembly diline dönüştürmek zorundasın oda C# gibi bedava kaynak kod gibi bir etki yaratmıyor çoğu şey karmaşık hale geliyor bide compiler optimizasyon için farklı şeyler yaptığı için extra zor oluyor. Eğer tersine mühendislik yapılmasından korkuyorsan C# yerine C++ kullanabilirsin WinUI, WPF ve Forms hepsi C++ ile çalıştırılabilir ve tersine mühendislik yapmak gerçekten zor özellikle WinUI C++'ı için. C# CIL (Common Intermediate Language) denen bir dile dönüştürülüyor doğrudan makine diline değil bu yüzden tersine mühendislik yapmak çok kolay ama mesela Unity IL2Cpp adında bir teknoloji oluşturdu böylelikle IL kodunu C++'a dönüştürüp tersine mühendislik yapmayı zorlaştırıyor. Ek olarak eğer bilmiyorsan IL öğrenmeni tavsiye ederim yazmak için değil sadece okuyabiliyor olman yeterli bu sayede yazdığın kodun performansını gözden geçirebilirsin bu siteyi kullanabilirsin SharpLab yada program olarak LINQPad 8 var o da çok profesyonel
C++ öğrenemem artık çok fazla şeyle uğraşıyorum bir taraftan UE5 bp bir taraftan WinF C# bir taraftanda SQL ve Web site işleri ayrıca şuan en gelişmiş olduğum dil C# yani bunu elimin tersiyle iteklemem benim için büyük bir eksi olur. Sadece WinForm mağaramdan çıkmak istemiştim ama önüme bir sürü soru işaretleri geldi.
Şimdi sence Designer Olmamasına rağmen WinUI 3'e mi başlıyım yoksa WPF'ye mi bende durumlar şuan %50 WPF, %30 WinUI, %20 mağaramda kalmak :D
WPF hakkında türkçe videolar nerdeyse hiç yok, WinUI'ı sorma bile yani
Başlangıç seviyesini geçebilmem için en azından biraz türkçe görmeliyim ingilizcem çok iyi değil.
 
C++ öğrenemem artık çok fazla şeyle uğraşıyorum bir taraftan UE5 bp bir taraftan WinF C# bir taraftanda SQL ve Web site işleri ayrıca şuan en gelişmiş olduğum dil C# yani bunu elimin tersiyle iteklemem benim için büyük bir eksi olur. Sadece WinForm mağaramdan çıkmak istemiştim ama önüme bir sürü soru işaretleri geldi.
Şimdi sence Designer Olmamasına rağmen WinUI 3'e mi başlıyım yoksa WPF'ye mi bende durumlar şuan %50 WPF, %30 WinUI, %20 mağaramda kalmak :D
WPF hakkında türkçe videolar nerdeyse hiç yok, WinUI'ı sorma bile yani
Başlangıç seviyesini geçebilmem için en azından biraz türkçe görmeliyim ingilizcem çok iyi değil.
C++ hakkında haklısın. Bence WPF'ye geç biraz daha profesyonel ve evrensel o yüzden avantaj kazandırır. İngilizce konusunda yapacak bir şey yok türkçe eğitim belki zorlarsan bence bulursun ama ben bu şekilde bir şey öğrenmiyorum daha çok deneme yanılma kendi elimle kazarak öğrenmemi sağlıyor o şekilde elde ettiğim bilgiye değer veriyorum ve unutmuyorum. 19 yaşındayım yaşıt sayılırız bu arada :)

Ve bu arada IL olayını unutma önemli
 
C++ hakkında haklısın. Bence WPF'ye geç biraz daha profesyonel ve evrensel o yüzden avantaj kazandırır. İngilizce konusunda yapacak bir şey yok türkçe eğitim belki zorlarsan bence bulursun ama ben bu şekilde bir şey öğrenmiyorum daha çok deneme yanılma kendi elimle kazarak öğrenmemi sağlıyor o şekilde elde ettiğim bilgiye değer veriyorum ve unutmuyorum. 19 yaşındayım yaşıt sayılırız bu arada :)

Ve bu arada IL olayını unutma önemli
Yazılıma erken başlamak kadar güzel birşey yok.
Eğer bu bilgilerimi 25-30 yaşımdan sonra öğrenseymişim kesin kafayı sıyırırdım. (şuanda bile sıyırmadığıma emin değilim) Proje büyüdükçe işler inanılmaz karmaşıklaşıyor. Ve herşeyi tek başına yapmak çok zorluyor. Şuanki kararım WPF'ye başlayacağım teşekkürler. IL olayını tam anlayamadım yani benim C# ile yazdığım kodu başka dile çevirmek mi yoksa şifrelemek mi? örneğin SHA-1/256 gibi mi yani
 
Yazılıma erken başlamak kadar güzel birşey yok.
Eğer bu bilgilerimi 25-30 yaşımdan sonra öğrenseymişim kesin kafayı sıyırırdım. (şuanda bile sıyırmadığıma emin değilim) Proje büyüdükçe işler inanılmaz karmaşıklaşıyor. Ve herşeyi tek başına yapmak çok zorluyor. Şuanki kararım WPF'ye başlayacağım teşekkürler. IL olayını tam anlayamadım yani benim C# ile yazdığım kodu başka dile çevirmek mi yoksa şifrelemek mi? örneğin SHA-1/256 gibi mi yani
Olay şu sen bir kod yazdığında bu kodun çalışabilmesi için bilgisayarın anlayabileceği bir şekilde çevrilmesi lazım ingilizceden türkçeye gibi düşün. Bu yüzden sen kodu yazdığında projeyi inşaa et diyorsun bu sırada eğer kod bir C++ kodu ise bilgisayar diline yakın olduğu için doğrudan bilgisayar diline dönüştürülüp exe dosyasının içine yerleştirilir. Ancak C# F# gibi dillerde olay farklı işliyor bilgisayar yazdığın C# kodunu doğrudan makine koduna çevirmez IL diye bir dil var C# kodu bu dile çevriliyor sonradan sen exe dosyasını çalıştırdığında bu IL dili makine koduna çevrilerek o zaman okunuyor fark bu. Peki neden IL öğrenmelisin çünkü formlarda falan duymuşsundur for mu daha hızlı foreach mi yada kodu hangi şekliyle yazarsam daha hızlı olur gibi. Bu soruları yazdığın kodun IL haline bakarak rahatlıkla cevaplayabilirsin çünkü ne olursa olsun yazdığın kod buna dönüştürülecek haliyle kalmayacak. Görünümü şu şekilde


IL.jpg


Her şeyi yapmak zor olmaya başlayabilir ama her şeyi kendin hallettiğin zaman ve bilgine güvendiğin zaman rahatlıyorsun onunda ayrı bir zevki var.
 
Olay şu sen bir kod yazdığında bu kodun çalışabilmesi için bilgisayarın anlayabileceği bir şekilde çevrilmesi lazım ingilizceden türkçeye gibi düşün. Bu yüzden sen kodu yazdığında projeyi inşaa et diyorsun bu sırada eğer kod bir C++ kodu ise bilgisayar diline yakın olduğu için doğrudan bilgisayar diline dönüştürülüp exe dosyasının içine yerleştirilir. Ancak C# F# gibi dillerde olay farklı işliyor bilgisayar yazdığın C# kodunu doğrudan makine koduna çevirmez IL diye bir dil var C# kodu bu dile çevriliyor sonradan sen exe dosyasını çalıştırdığında bu IL dili makine koduna çevrilerek o zaman okunuyor fark bu. Peki neden IL öğrenmelisin çünkü formlarda falan duymuşsundur for mu daha hızlı foreach mi yada kodu hangi şekliyle yazarsam daha hızlı olur gibi. Bu soruları yazdığın kodun IL haline bakarak rahatlıkla cevaplayabilirsin çünkü ne olursa olsun yazdığın kod buna dönüştürülecek haliyle kalmayacak. Görünümü şu şekilde


Eki Görüntüle 2288811

Her şeyi yapmak zor olmaya başlayabilir ama her şeyi kendin hallettiğin zaman ve bilgine güvendiğin zaman rahatlıyorsun onunda ayrı bir zevki var.
Şimdi daha iyi anladım sağolun.
Öğrenmekten kasıtınız IL dilini 0dan mı öğrenmeye başlıyım? Çünkü bu CPP ye başlamakla aynı değil mi zaten
Ayrıca burdan test ederek hangisinin daha hızlı çalıştığını kod uzunluğundan anlayabilirsem öğrenmemin mantığı nedir hocam?
 
Şimdi daha iyi anladım sağolun.
Öğrenmekten kasıtınız IL dilini 0dan mı öğrenmeye başlıyım? Çünkü bu CPP ye başlamakla aynı değil mi zaten
Ayrıca burdan test ederek hangisinin daha hızlı çalıştığını kod uzunluğundan anlayabilirsem öğrenmemin mantığı nedir hocam?
IL inanılmaz basit bir dil olmasına rağmen yazmak için geliştirilmiş bir dil değil (tabii yazan var :) ) IL dilini sadece okuyabiliyor olman lazım ben deneme yanılmayla 1 saat içinde okuyabiliyor hale geldim gir bak çok basit gerçekten. Peki daha iyi performans verdiğini nasıl anlayacaksın tabiiki işlem yoğunluğundan mesela yazdığım kodda if ve if-else mi kullanmalıyım yoksa switch mi? diye merak ediyorsan IL karşılığına bakacaksın ikisini karşılaştırdığında if ve else if istediğin yere ulaşmak için daha fazla işlem yapıyorsa o halde switch kullanacaksın özellikle döngüler için inanılmaz derecede performansı arttırıyor. Ve C#'taki kod uzunluğu ile IL uzunluğu çok farklı olabiliyor mesela C# dynamic kullanımı bak şu kodun IL karşılığı çok basit
IL2.jpg


peki bunu dynamic şeklinde yazarsan ne olur? Kod bu:
IL3.jpg

IL karşılığı bu:
IL5.jpg

IL6.jpg

IL7.jpg

:)
 
IL inanılmaz basit bir dil olmasına rağmen yazmak için geliştirilmiş bir dil değil (tabii yazan var :) ) IL dilini sadece okuyabiliyor olman lazım ben deneme yanılmayla 1 saat içinde okuyabiliyor hale geldim gir bak çok basit gerçekten. Peki daha iyi performans verdiğini nasıl anlayacaksın tabiiki işlem yoğunluğundan mesela yazdığım kodda if ve if-else mi kullanmalıyım yoksa switch mi? diye merak ediyorsan IL karşılığına bakacaksın ikisini karşılaştırdığında if ve else if istediğin yere ulaşmak için daha fazla işlem yapıyorsa o halde switch kullanacaksın özellikle döngüler için inanılmaz derecede performansı arttırıyor. Ve C#'taki kod uzunluğu ile IL uzunluğu çok farklı olabiliyor mesela C# dynamic kullanımı bak şu kodun IL karşılığı çok basit
Eki Görüntüle 2288857

peki bunu dynamic şeklinde yazarsan ne olur? Kod bu:
Eki Görüntüle 2288859
IL karşılığı bu:
Eki Görüntüle 2288868
Eki Görüntüle 2288870
Eki Görüntüle 2288872
:)
Bu bilgi benim için altın değerinde diyebilirim çok teşekkür ederim.
.cs dosyalarımdaki kodlar 4, 5k yı geçtiği oluyor Hemde Space kullanmıyorum nerdeyse hiç:
örnek 1 değişkenler:
1724098386961.png

örnek 2 tek satırlık veya çok az methodlar:
1724098424037.png

1724098519985.png

1724098566924.png

Bu kodlar bir uygulamamın Beta versiyonuydu yani kodlar optimize değil. Çok yoğun çalıştığım zamanlardan kalma bu kodlar o yüzden normalde max 100mb ram yiyeceğine 900-1000mb yiyiordu
Şuan açık uygulamam 50mb :)

Eskiden bütün kodları designer.cs ve .cs dosyasında tutuyordum artık classlara bölüyorum özel methodlar açıyorum başka .cs dosyalarından çağırıyorum vs. vs. yani nerdeyse x5 kat daha performanslı çalışıyor. Ama hâla daha eksiklerimin olduğunu düşünüyorum çünkü MultiTasking de öğrenmeliyim Kullanıcı işlemlerinin önüne geçmemeliyim ayrıca UI tasarımımda da problemler vardı artık düzeliyor yavaş yavaş
Windoc beta:
1724098805204.png


Windoc 1.0 (daha 2 gün oldu başlayalı sadece giriş menüsü ve açılma menüsü var hâla güzel olmadı bence
1724098969645.png

Web sitesinden bilgileri çekip oturum açtıktan sonra
1724098995847.png


henüz daha hiçbirşey yapmadım sadece renk tonları betaya göre biraz daha iyi.
 

Dosya Ekleri

  • 1724098447219.png
    1724098447219.png
    17,6 KB · Görüntüleme: 15
Son düzenleme:
Bu bilgi benim için altın değerinde diyebilirim çok teşekkür ederim.
<3
.cs dosyalarımdaki kodlar 4, 5k yı geçtiği oluyor Hemde Space kullanmıyorum nerdeyse hiç:
Script düzeni ve space önemli :)

İlk yayınladığım uygulamada optimizasyon diye bir şey tanımıyordum o yüzden çok tepki aldı uygulama bende o günden beri optimizasyon takıntılısı oldum :D

Bu arada list.Find(x => x == "Hello"); gibi bir kod Find'in içeriği için yeni bir metod oluşturuyor ve script'e kaydediyor bende bir script'te yaklaşık 80 tane bu şekilde Find kodu yazmıştım hepsini tek bir metod olarak ayarlamak yerine 💀. Bunu IL olmasa bilemezdim mesela
 
<3

Script düzeni ve space önemli :)

İlk yayınladığım uygulamada optimizasyon diye bir şey tanımıyordum o yüzden çok tepki aldı uygulama bende o günden beri optimizasyon takıntılısı oldum :D

Bu arada list.Find(x => x == "Hello"); gibi bir kod Find'in içeriği için yeni bir metod oluşturuyor ve script'e kaydediyor bende bir script'te yaklaşık 80 tane bu şekilde Find kodu yazmıştım hepsini tek bir metod olarak ayarlamak yerine 💀. Bunu IL olmasa bilemezdim mesela
Web sitesinden mi deniyorsunuz yoksa programı indirdiniz mi?
 

Technopat Haberler

Yeni konular

Geri
Yukarı