Çö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ı:



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ı:



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.



Ş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.

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
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
 
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




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?
 
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


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

IL karşılığı bu:



 
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:

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



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:


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

Web sitesinden bilgileri çekip oturum açtıktan sonra


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

Dosya Ekleri

  • 1724098447219.png
    17,6 KB · Görüntüleme: 16
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

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?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…