{"id":42096,"date":"2026-05-27T09:04:56","date_gmt":"2026-05-27T06:04:56","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/"},"modified":"2026-05-27T09:05:23","modified_gmt":"2026-05-27T06:05:23","slug":"yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/","title":{"rendered":"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm"},"content":{"rendered":"<h2>Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm<\/h2>\n<p>Yapay zeka (YZ) ajanlar\u0131, g\u00fcn\u00fcm\u00fcz i\u015f d\u00fcnyas\u0131nda s\u00fcre\u00e7leri otomatikle\u015ftirmek, veri toplamak ve karma\u015f\u0131k g\u00f6revleri yerine getirmek i\u00e7in vazge\u00e7ilmez hale geldi. Ancak bu ak\u0131ll\u0131 yard\u0131mc\u0131lar, bazen en basit g\u00f6revlerde bile zorlanabiliyor: \u00f6rne\u011fin, bir Windows uygulamas\u0131ndaki bir d\u00fc\u011fmeyi t\u0131klamak gibi. G\u00f6rsel tan\u0131ma tabanl\u0131 veya X\/Y koordinatlar\u0131na dayal\u0131 otomasyon y\u00f6ntemleri, dinamik kullan\u0131c\u0131 aray\u00fczleri (UI) kar\u015f\u0131s\u0131nda s\u0131kl\u0131kla yetersiz kal\u0131r ve ajan\u0131n &#8220;d\u00fc\u011fmeleri ka\u00e7\u0131rmas\u0131na&#8221; neden olur. Peki, bu t\u00fcr inat\u00e7\u0131 sorunlar\u0131 nas\u0131l a\u015fabiliriz? Cevap, Microsoft&#8217;un g\u00fc\u00e7l\u00fc Windows UI Otomasyonu (UIA) \u00e7er\u00e7evesinde yat\u0131yor.<\/p>\n<h2>Yapay Zeka Ajanlar\u0131n\u0131n Kullan\u0131c\u0131 Aray\u00fcz\u00fc ile \u0130mtihan\u0131: Sorun Nerede Ba\u015fl\u0131yor?<\/h2>\n<p>Yapay zeka ajanlar\u0131, \u00f6zellikle Robotik S\u00fcre\u00e7 Otomasyonu (RPA) alan\u0131nda, insan benzeri etkile\u015fimler yoluyla yaz\u0131l\u0131m uygulamalar\u0131n\u0131 kontrol etmek \u00fczere tasarlanm\u0131\u015ft\u0131r. Bu ajanlar, genellikle masa\u00fcst\u00fc uygulamalar\u0131, web taray\u0131c\u0131lar\u0131 veya sanal makineler \u00fczerinde \u00e7al\u0131\u015farak veri giri\u015fi, rapor olu\u015fturma veya sistemler aras\u0131 entegrasyon gibi g\u00f6revleri yerine getirirler. Ancak, bu &#8220;insan benzeri&#8221; etkile\u015fimlerin bir s\u0131n\u0131r\u0131 vard\u0131r. Bir insan, bir d\u00fc\u011fmenin rengi de\u011fi\u015fse, konumu biraz kayd\u0131r\u0131lsa veya boyutu farkl\u0131la\u015fsa bile onu tan\u0131y\u0131p t\u0131klayabilir. YZ ajanlar\u0131 i\u00e7in bu durum, \u00f6zellikle geleneksel otomasyon teknikleri kullan\u0131ld\u0131\u011f\u0131nda, bir kabusa d\u00f6n\u00fc\u015febilir.<\/p>\n<p>Sorun genellikle, ajanlar\u0131n bir UI elementini (\u00f6rne\u011fin bir d\u00fc\u011fmeyi) tan\u0131mlamak i\u00e7in kulland\u0131\u011f\u0131 y\u00f6ntemlerden kaynaklan\u0131r. \u00c7o\u011fu zaman, ajanlar ekran g\u00f6r\u00fcnt\u00fclerine dayal\u0131 g\u00f6rsel tan\u0131ma algoritmalar\u0131 veya ekran \u00fczerindeki piksel koordinatlar\u0131na (X\/Y) g\u00f6re hareket eder. G\u00f6rsel tan\u0131ma, bir d\u00fc\u011fmenin belirli bir resmini veya kal\u0131b\u0131n\u0131 arar. E\u011fer uygulaman\u0131n temas\u0131 de\u011fi\u015firse, d\u00fc\u011fmenin rengi veya yaz\u0131 tipi g\u00fcncellenirse, ajan o d\u00fc\u011fmeyi &#8220;g\u00f6remeyebilir&#8221;. Benzer \u015fekilde, X\/Y koordinatlar\u0131, uygulaman\u0131n penceresi ta\u015f\u0131nd\u0131\u011f\u0131nda, ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc de\u011fi\u015fti\u011finde veya farkl\u0131 bir monit\u00f6rde \u00e7al\u0131\u015ft\u0131\u011f\u0131nda tamamen anlams\u0131z hale gelir. Bu k\u0131r\u0131lganl\u0131k, YZ ajan\u0131n\u0131n g\u00fcvenilirli\u011fini ciddi \u015fekilde d\u00fc\u015f\u00fcr\u00fcr ve otomasyon s\u00fcre\u00e7lerinin s\u0131k s\u0131k ba\u015far\u0131s\u0131z olmas\u0131na yol a\u00e7ar.<\/p>\n<p>Dinamik kullan\u0131c\u0131 aray\u00fczleri, bu sorunu daha da derinle\u015ftirir. Modern uygulamalar, kullan\u0131c\u0131n\u0131n etkile\u015fimine veya arka plandaki verilere g\u00f6re aray\u00fcz elementlerini s\u00fcrekli olarak de\u011fi\u015ftirebilir, gizleyebilir veya yeniden d\u00fczenleyebilir. Bir d\u00fc\u011fme, belirli bir ko\u015ful sa\u011flanana kadar g\u00f6r\u00fcnmeyebilir veya farkl\u0131 bir metinle etiketi de\u011fi\u015febilir. Geleneksel otomasyon yakla\u015f\u0131mlar\u0131, bu t\u00fcr de\u011fi\u015fkenlikleri y\u00f6netmekte yetersiz kal\u0131r. Bu durum, YZ ajanlar\u0131n\u0131n sadece &#8220;d\u00fc\u011fmeleri ka\u00e7\u0131rmas\u0131na&#8221; de\u011fil, ayn\u0131 zamanda yanl\u0131\u015f d\u00fc\u011fmeleri t\u0131klamas\u0131na veya otomasyon ak\u0131\u015f\u0131n\u0131n tamamen durmas\u0131na neden olabilir. Bu nedenle, daha sa\u011flam ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fcne ihtiya\u00e7 duyulmaktad\u0131r.<\/p>\n<h2>Geleneksel Otomasyon Y\u00f6ntemleri Neden Yetersiz Kal\u0131yor?<\/h2>\n<p>Yapay zeka ve otomasyon d\u00fcnyas\u0131nda, bir uygulaman\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fc ile etkile\u015fim kurmak i\u00e7in \u00e7e\u015fitli y\u00f6ntemler kullan\u0131lm\u0131\u015ft\u0131r. Ancak bu y\u00f6ntemlerin \u00e7o\u011fu, \u00f6zellikle Windows masa\u00fcst\u00fc uygulamalar\u0131 s\u00f6z konusu oldu\u011funda, belirli s\u0131n\u0131rlamalar ve k\u0131r\u0131lganl\u0131klar bar\u0131nd\u0131r\u0131r. Gelin, bu geleneksel yakla\u015f\u0131mlar\u0131n neden yetersiz kald\u0131\u011f\u0131n\u0131 ve YZ ajanlar\u0131m\u0131z\u0131n neden s\u0131k s\u0131k t\u00f6kezledi\u011fini daha yak\u0131ndan inceleyelim.<\/p>\n<h3>X\/Y Koordinatlar\u0131na Dayal\u0131 Otomasyon: \u0130lk ve En K\u0131r\u0131lgan Yakla\u015f\u0131m<\/h3>\n<p>En ilkel otomasyon y\u00f6ntemlerinden biri, ekran \u00fczerindeki belirli X ve Y koordinatlar\u0131na t\u0131klamakt\u0131r. Bu yakla\u015f\u0131m, bir d\u00fc\u011fmenin veya metin kutusunun ekran\u0131n belirli bir noktas\u0131nda her zaman ayn\u0131 konumda olaca\u011f\u0131 varsay\u0131m\u0131na dayan\u0131r. Ancak bu varsay\u0131m, modern i\u015fletim sistemleri ve dinamik uygulamalar kar\u015f\u0131s\u0131nda h\u0131zla \u00e7\u00f6ker. Uygulama penceresinin konumu de\u011fi\u015fti\u011finde, ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc farkl\u0131la\u015ft\u0131\u011f\u0131nda veya uygulaman\u0131n kendisi g\u00fcncellendi\u011finde, belirlenen koordinatlar art\u0131k ge\u00e7erli olmaz. Bu durum, otomasyonun tamamen bozulmas\u0131na ve YZ ajan\u0131n\u0131n bo\u015flu\u011fa t\u0131klamas\u0131na neden olur. Bak\u0131m maliyeti (maintenance cost) bu y\u00f6ntemde inan\u0131lmaz derecede y\u00fcksektir, \u00e7\u00fcnk\u00fc her k\u00fc\u00e7\u00fck de\u011fi\u015fiklik otomasyon beti\u011finin yeniden yaz\u0131lmas\u0131n\u0131 gerektirir.<\/p>\n<h3>G\u00f6rsel Tan\u0131ma ve G\u00f6r\u00fcnt\u00fc E\u015fle\u015ftirme: &#8220;G\u00f6rd\u00fc\u011f\u00fcn\u00fc T\u0131kla&#8221; Yakla\u015f\u0131m\u0131n\u0131n S\u0131n\u0131rlar\u0131<\/h3>\n<p>G\u00f6rsel tan\u0131ma (visual recognition) tabanl\u0131 otomasyon, bir ad\u0131m daha ileri giderek belirli bir d\u00fc\u011fmenin veya UI elementinin ekran g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc al\u0131r ve otomasyon s\u0131ras\u0131nda bu g\u00f6r\u00fcnt\u00fcy\u00fc arar. Buldu\u011funda, ilgili konuma t\u0131klama veya metin giri\u015fi gibi eylemler ger\u00e7ekle\u015ftirir. Bu y\u00f6ntem, X\/Y koordinatlar\u0131na g\u00f6re biraz daha esnektir, \u00e7\u00fcnk\u00fc elementin konumu de\u011fi\u015fse bile g\u00f6r\u00fcnt\u00fcs\u00fc e\u015fle\u015firse bulunabilir. Ancak g\u00f6rsel tan\u0131ma da kendi i\u00e7inde b\u00fcy\u00fck s\u0131n\u0131rlamalara sahiptir:<\/p>\n<ul>\n<li><strong>Tematik De\u011fi\u015fiklikler:<\/strong> Uygulaman\u0131n temas\u0131 (a\u00e7\u0131k\/koyu mod), renk \u015femas\u0131 veya ikonlar\u0131 de\u011fi\u015firse, e\u015fle\u015ftirme ba\u015far\u0131s\u0131z olur.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcn\u00fcrl\u00fck ve \u00d6l\u00e7eklendirme:<\/strong> Farkl\u0131 ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fckleri veya Windows&#8217;un UI \u00f6l\u00e7eklendirme ayarlar\u0131, g\u00f6r\u00fcnt\u00fcn\u00fcn boyutunu ve g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc etkileyerek e\u015fle\u015ftirmeyi zorla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Dinamik \u0130\u00e7erik:<\/strong> D\u00fc\u011fme metinleri veya ikonlar\u0131 dinamik olarak de\u011fi\u015fiyorsa, \u00f6nceden kaydedilen g\u00f6r\u00fcnt\u00fc art\u0131k ge\u00e7erli olmayabilir.<\/li>\n<li><strong>Performans:<\/strong> S\u00fcrekli ekran taramas\u0131 ve g\u00f6r\u00fcnt\u00fc i\u015fleme, kaynak yo\u011fun bir s\u00fcre\u00e7 olabilir ve otomasyonun yava\u015flamas\u0131na neden olabilir.<\/li>\n<\/ul>\n<p>Bu yakla\u015f\u0131mlar, \u00f6zellikle YZ ajanlar\u0131n\u0131n karma\u015f\u0131k ve kritik i\u015f s\u00fcre\u00e7lerinde kullan\u0131ld\u0131\u011f\u0131 durumlarda kabul edilemez d\u00fczeyde k\u0131r\u0131lganl\u0131k sunar. G\u00fcvenilirlik eksikli\u011fi, ajanlar\u0131n s\u0131k s\u0131k hata vermesine, manuel m\u00fcdahale gerektirmesine ve sonu\u00e7 olarak otomasyonun vaat etti\u011fi verimlilik art\u0131\u015f\u0131n\u0131 sa\u011flayamamas\u0131na neden olur.<\/p>\n<h3>Nesne Tan\u0131ma (Object Recognition) ve DOM Tabanl\u0131 Yakla\u015f\u0131mlar: Web&#8217;de G\u00fc\u00e7l\u00fc, Masa\u00fcst\u00fcnde S\u0131n\u0131rl\u0131<\/h3>\n<p>Web tabanl\u0131 otomasyonda, taray\u0131c\u0131n\u0131n Belge Nesne Modeli (DOM &#8211; Document Object Model) yap\u0131s\u0131na eri\u015fmek, elementleri ID, Class, XPath gibi \u00f6zelliklerle tan\u0131mlamak olduk\u00e7a yayg\u0131n ve etkilidir. Selenium gibi ara\u00e7lar, bu sayede web elementlerini g\u00fcvenilir bir \u015fekilde bulabilir. Ancak masa\u00fcst\u00fc uygulamalar\u0131 i\u00e7in bu t\u00fcr bir DOM yap\u0131s\u0131 genellikle mevcut de\u011fildir. Baz\u0131 otomasyon ara\u00e7lar\u0131, uygulamalar\u0131n dahili API&#8217;lerine veya \u00f6zel kontrollerine eri\u015fmeye \u00e7al\u0131\u015fsa da, bu genellikle uygulaman\u0131n teknolojisine (\u00f6rne\u011fin WPF, WinForms, Qt) \u00f6zel \u00e7\u00f6z\u00fcmler gerektirir ve evrensel bir yakla\u015f\u0131m sunmaz. Bu da, farkl\u0131 uygulamalar i\u00e7in farkl\u0131 otomasyon stratejileri geli\u015ftirmek anlam\u0131na gelir ki bu da \u00f6l\u00e7eklenebilirlik (scalability) ve bak\u0131m a\u00e7\u0131s\u0131ndan zordur. \u0130\u015fte tam bu noktada, Windows UI Otomasyonu (UIA) devreye girerek bu bo\u015flu\u011fu doldurur ve masa\u00fcst\u00fc uygulamalar\u0131 i\u00e7in sa\u011flam bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h2>Windows UI Otomasyonu Nedir ve Nas\u0131l Bir Kurtar\u0131c\u0131 Olabilir?<\/h2>\n<p>Geleneksel otomasyon y\u00f6ntemlerinin s\u0131n\u0131rlamalar\u0131 g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, daha sa\u011flam ve g\u00fcvenilir bir yakla\u015f\u0131ma ihtiya\u00e7 duyulur. \u0130\u015fte tam bu noktada Windows UI Otomasyonu (UIA &#8211; User Interface Automation) devreye giriyor. UIA, Microsoft taraf\u0131ndan geli\u015ftirilen ve Windows uygulamalar\u0131n\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fc elementlerine programatik eri\u015fim sa\u011flayan bir eri\u015filebilirlik (accessibility) \u00e7er\u00e7evesidir. Temel amac\u0131, ekran okuyucular\u0131, b\u00fcy\u00fcte\u00e7ler ve di\u011fer yard\u0131mc\u0131 teknolojilerin engelli kullan\u0131c\u0131lara UI hakk\u0131nda bilgi sa\u011flamas\u0131na ve onlarla etkile\u015fim kurmas\u0131na olanak tan\u0131makt\u0131r. Ancak bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eve, ayn\u0131 zamanda otomasyon senaryolar\u0131 i\u00e7in de m\u00fckemmel bir temel sunar.<\/p>\n<h3>UIA&#8217;n\u0131n Temel Prensipleri: Neden Bu Kadar G\u00fc\u00e7l\u00fc?<\/h3>\n<p>UIA, UI elementlerini g\u00f6rsel \u00f6zellikler yerine programatik \u00f6zelliklerle tan\u0131mlar. Bu, onu X\/Y koordinatlar\u0131ndan veya g\u00f6rsel tan\u0131madan \u00e7ok daha sa\u011flam hale getirir. UIA&#8217;n\u0131n temel prensipleri \u015funlard\u0131r:<\/p>\n<ol>\n<li><strong>UI Elementleri Nesne Olarak:<\/strong> UIA, bir Windows uygulamas\u0131ndaki her bir d\u00fc\u011fmeyi, metin kutusunu, men\u00fcy\u00fc veya pencereyi birer <code>AutomationElement<\/code> nesnesi olarak temsil eder. Bu nesneler, elementin t\u00fcr\u00fc, ad\u0131, kimli\u011fi, durumu gibi zengin meta veriler i\u00e7erir.<\/li>\n<li><strong>Kontrol Desenleri (Control Patterns):<\/strong> Her <code>AutomationElement<\/code>, belirli bir i\u015flevselli\u011fi temsil eden bir veya daha fazla kontrol desenini destekleyebilir. \u00d6rne\u011fin, bir d\u00fc\u011fme genellikle <code>InvokePattern<\/code> (t\u0131klama i\u015flevi) desteklerken, bir metin kutusu <code>ValuePattern<\/code> (metin de\u011feri okuma\/yazma) destekler. Bu desenler, elementlerle standartla\u015ft\u0131r\u0131lm\u0131\u015f bir \u015fekilde etkile\u015fim kurmay\u0131 sa\u011flar.<\/li>\n<li><strong>\u00d6zellikler (Properties):<\/strong> Her <code>AutomationElement<\/code>, <code>Name<\/code> (ekranda g\u00f6r\u00fcnen metin), <code>AutomationId<\/code> (geli\u015ftirici taraf\u0131ndan atanan benzersiz kimlik), <code>ControlType<\/code> (d\u00fc\u011fme, metin kutusu, pencere vb.) gibi bir dizi \u00f6zelli\u011fe sahiptir. Bu \u00f6zellikler, elementleri g\u00fcvenilir bir \u015fekilde bulmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>A\u011fa\u00e7 Yap\u0131s\u0131 (Tree Structure):<\/strong> UIA, UI elementlerini hiyerar\u015fik bir a\u011fa\u00e7 yap\u0131s\u0131 (tree structure) olarak d\u00fczenler. Masa\u00fcst\u00fc (desktop) k\u00f6k elementidir, alt\u0131nda uygulamalar, pencereler, paneller ve en sonunda tek tek kontroller bulunur. Bu yap\u0131, elementler aras\u0131nda gezinmeyi ve karma\u015f\u0131k UI&#8217;larda bile do\u011fru elementi bulmay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ol>\n<h3>UIA Nas\u0131l Bir Kurtar\u0131c\u0131 Olabilir?<\/h3>\n<p>UIA&#8217;n\u0131n bu prensipleri, YZ ajanlar\u0131n\u0131n d\u00fc\u011fmeleri ka\u00e7\u0131rma sorununa g\u00fc\u00e7l\u00fc ve kal\u0131c\u0131 bir \u00e7\u00f6z\u00fcm sunar:<\/p>\n<ul>\n<li><strong>G\u00fcvenilirlik:<\/strong> UIA, elementleri programatik \u00f6zelliklerine g\u00f6re tan\u0131mlad\u0131\u011f\u0131 i\u00e7in, uygulaman\u0131n konumu, temas\u0131 veya \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc de\u011fi\u015fse bile elementler hala bulunabilir. Bir d\u00fc\u011fmenin <code>AutomationId<\/code>&#8216;si veya <code>Name<\/code>&#8216;i genellikle de\u011fi\u015fmez.<\/li>\n<li><strong>Esneklik:<\/strong> Kontrol desenleri sayesinde, farkl\u0131 t\u00fcrdeki UI elementleriyle tutarl\u0131 bir \u015fekilde etkile\u015fim kurulabilir. Bir d\u00fc\u011fmeye t\u0131klamak i\u00e7in <code>InvokePattern<\/code>, bir onay kutusunu i\u015faretlemek i\u00e7in <code>TogglePattern<\/code> kullan\u0131l\u0131r.<\/li>\n<li><strong>Dinamik UI Y\u00f6netimi:<\/strong> UIA, elementlerin g\u00f6r\u00fcn\u00fcrl\u00fck, etkinle\u015ftirilme durumu gibi \u00f6zelliklerini kontrol etme yetene\u011fi sunar. Bu, bir d\u00fc\u011fmenin t\u0131klanabilir hale gelmesini beklemek veya bir pencerenin a\u00e7\u0131l\u0131p a\u00e7\u0131lmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Geli\u015ftirici Odakl\u0131l\u0131k:<\/strong> Modern Windows uygulamalar\u0131n\u0131n \u00e7o\u011fu, UIA ile uyumlu olacak \u015fekilde geli\u015ftirilir. Geli\u015ftiriciler, kontrollerine <code>AutomationId<\/code>&#8216;ler atayarak otomasyonu kolayla\u015ft\u0131rabilirler.<\/li>\n<\/ul>\n<p>\u00d6zetle, UIA, YZ ajanlar\u0131m\u0131za &#8220;g\u00f6rsel&#8221; bir bak\u0131\u015f a\u00e7\u0131s\u0131 yerine &#8220;yap\u0131sal&#8221; bir bak\u0131\u015f a\u00e7\u0131s\u0131 kazand\u0131r\u0131r. Bu sayede ajanlar, bir d\u00fc\u011fmeyi sadece &#8220;ekrandaki bir resim&#8221; olarak de\u011fil, &#8220;belirli bir kimli\u011fe ve i\u015fleve sahip bir nesne&#8221; olarak alg\u0131lar. Bu da otomasyon s\u00fcre\u00e7lerinin \u00e7ok daha sa\u011flam, bak\u0131m\u0131n\u0131n kolay ve nihayetinde g\u00fcvenilir olmas\u0131n\u0131 sa\u011flar. Art\u0131k YZ ajanlar\u0131m\u0131z, dinamik ve de\u011fi\u015fken UI&#8217;lar kar\u015f\u0131s\u0131nda bile d\u00fc\u011fmeleri g\u00fcvenle t\u0131klayabilir hale gelir.<\/p>\n<h2>Windows UI Otomasyonu ile D\u00fc\u011fmeleri Hedefleme: Ad\u0131m Ad\u0131m Yakla\u015f\u0131m<\/h2>\n<p>Windows UI Otomasyonu (UIA) ile bir d\u00fc\u011fmeyi g\u00fcvenilir bir \u015fekilde hedeflemek ve t\u0131klamak, geleneksel y\u00f6ntemlere g\u00f6re \u00e7ok daha sa\u011flam bir s\u00fcre\u00e7tir. Bu b\u00f6l\u00fcmde, UIA&#8217;y\u0131 kullanarak bir Windows uygulamas\u0131ndaki bir d\u00fc\u011fmeyi nas\u0131l bulaca\u011f\u0131m\u0131z\u0131 ve onunla nas\u0131l etkile\u015fim kuraca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Bu \u00f6rnekte C# dilini kullanaca\u011f\u0131z, \u00e7\u00fcnk\u00fc UIA do\u011frudan .NET Framework&#8217;\u00fcn bir par\u00e7as\u0131d\u0131r ve C# ile kullan\u0131m\u0131 olduk\u00e7a do\u011fald\u0131r.<\/p>\n<h3>Ad\u0131m 1: UI Elementlerini Ke\u015ffetmek i\u00e7in Inspect.exe Kullan\u0131m\u0131<\/h3>\n<p>UIA ile otomasyona ba\u015flamadan \u00f6nce, hedef uygulaman\u0131n UI elementlerinin \u00f6zelliklerini (<code>AutomationId<\/code>, <code>Name<\/code>, <code>ControlType<\/code> vb.) bilmemiz gerekir. Microsoft SDK&#8217;s\u0131n\u0131n bir par\u00e7as\u0131 olan <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/winauto\/inspect-objects\">Inspect.exe<\/a> arac\u0131 bu i\u015f i\u00e7in bi\u00e7ilmi\u015f kaftand\u0131r. Inspect.exe&#8217;yi \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, fare imlecinizi bir UI elementi \u00fczerine getirdi\u011finizde, o elementin t\u00fcm UIA \u00f6zelliklerini g\u00f6rebilirsiniz. \u00d6zellikle <code>AutomationId<\/code> ve <code>Name<\/code> \u00f6zellikleri, elementleri benzersiz bir \u015fekilde tan\u0131mlamak i\u00e7in \u00e7ok de\u011ferlidir.<\/p>\n<p>\u00d6rne\u011fin, bir hesap makinesi uygulamas\u0131ndaki &#8220;Topla&#8221; d\u00fc\u011fmesini otomatikle\u015ftirmek istedi\u011fimizi varsayal\u0131m. Inspect.exe ile bu d\u00fc\u011fmeye bakt\u0131\u011f\u0131m\u0131zda \u015funa benzer \u00f6zellikler g\u00f6rebiliriz:<\/p>\n<ul>\n<li><code>Name: \"Topla\"<\/code><\/li>\n<li><code>AutomationId: \"plusButton\"<\/code> (veya benzeri bir de\u011fer)<\/li>\n<li><code>ControlType: \"Button\"<\/code><\/li>\n<\/ul>\n<p>Bu bilgiler, kodumuzda hedef d\u00fc\u011fmeyi bulmak i\u00e7in kullanaca\u011f\u0131m\u0131z anahtarlard\u0131r.<\/p>\n<h3>Ad\u0131m 2: UIA K\u00fct\u00fcphanesini Projeye Dahil Etmek<\/h3>\n<p>C# projenizde UIA&#8217;y\u0131 kullanmak i\u00e7in, genellikle <code>UIAutomationClient<\/code> ve <code>UIAutomationTypes<\/code> referanslar\u0131n\u0131 eklemeniz gerekir. Bunlar genellikle .NET Framework&#8217;\u00fcn bir par\u00e7as\u0131 olarak gelir.<\/p>\n<div class=\"code-container\">\n<pre><code>using System.Windows.Automation; \/\/ Ana UIA k\u00fct\u00fcphanesi<\/code><\/pre>\n<\/p><\/div>\n<h3>Ad\u0131m 3: Hedef Uygulamay\u0131 Bulmak<\/h3>\n<p>\u00d6ncelikle, otomasyon yapmak istedi\u011fimiz uygulaman\u0131n ana penceresini bulmam\u0131z gerekir. Bunu, uygulaman\u0131n pencere ba\u015fl\u0131\u011f\u0131na (<code>Name<\/code> \u00f6zelli\u011fi) veya i\u015flem ad\u0131na g\u00f6re yapabiliriz.<\/p>\n<div class=\"code-container\">\n<pre><code>\nAutomationElement rootElement = AutomationElement.RootElement; \/\/ T\u00fcm masa\u00fcst\u00fcn\u00fc temsil eder\n\n\/\/ Hesap Makinesi uygulamas\u0131n\u0131 ismine g\u00f6re bulal\u0131m\n\/\/ Uygulaman\u0131n a\u00e7\u0131k olmas\u0131 gerekti\u011fini unutmay\u0131n\nAutomationElement calculatorWindow = rootElement.FindFirst(\n    TreeScope.Children,\n    new PropertyCondition(AutomationElement.NameProperty, \"Hesap Makinesi\")\n);\n\nif (calculatorWindow == null)\n{\n    Console.WriteLine(\"Hesap Makinesi uygulamas\u0131 bulunamad\u0131.\");\n    return;\n}\nConsole.WriteLine($\"Hesap Makinesi penceresi bulundu: {calculatorWindow.Current.Name}\");\n      <\/code><\/pre>\n<\/p><\/div>\n<h3>Ad\u0131m 4: Hedef D\u00fc\u011fmeyi Bulmak<\/h3>\n<p>Uygulama penceresini bulduktan sonra, s\u0131ra d\u00fc\u011fmeyi bulmaya gelir. Genellikle <code>AutomationId<\/code> en g\u00fcvenilir tan\u0131mlay\u0131c\u0131d\u0131r. E\u011fer <code>AutomationId<\/code> yoksa, <code>Name<\/code> ve <code>ControlType<\/code> kombinasyonunu kullanabiliriz.<\/p>\n<div class=\"code-container\">\n<pre><code>\n\/\/ D\u00fc\u011fmeyi AutomationId veya Name ve ControlType ile bulal\u0131m\nAutomationElement plusButton = calculatorWindow.FindFirst(\n    TreeScope.Descendants, \/\/ Pencerenin alt\u0131ndaki t\u00fcm elementlerde ara\n    new AndCondition(\n        new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button),\n        new PropertyCondition(AutomationElement.NameProperty, \"Topla\") \/\/ Inspect.exe'den ald\u0131\u011f\u0131m\u0131z isim\n    )\n);\n\n\/\/ Alternatif olarak, e\u011fer varsa AutomationId kullanmak daha g\u00fcvenilirdir:\n\/\/ AutomationElement plusButton = calculatorWindow.FindFirst(\n\/\/     TreeScope.Descendants,\n\/\/     new PropertyCondition(AutomationElement.AutomationIdProperty, \"plusButton\") \/\/ \u00d6rnek bir AutomationId\n\/\/ );\n\nif (plusButton == null)\n{\n    Console.WriteLine(\"Topla d\u00fc\u011fmesi bulunamad\u0131.\");\n    return;\n}\nConsole.WriteLine($\"Topla d\u00fc\u011fmesi bulundu: {plusButton.Current.Name}\");\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Burada <code>TreeScope.Descendants<\/code>, <code>calculatorWindow<\/code> elementinin alt\u0131ndaki t\u00fcm alt elementleri (torunlar\u0131 dahil) aramas\u0131n\u0131 sa\u011flar. <code>AndCondition<\/code> ise birden fazla ko\u015fulu (hem <code>ControlType<\/code> hem de <code>Name<\/code>&#8216;in e\u015fle\u015fmesi gibi) birle\u015ftirmemizi sa\u011flar.<\/p>\n<h3>Ad\u0131m 5: D\u00fc\u011fmeye T\u0131klama (InvokePattern Kullan\u0131m\u0131)<\/h3>\n<p>D\u00fc\u011fmeyi bulduktan sonra, onunla etkile\u015fim kurmak i\u00e7in uygun kontrol desenini kullan\u0131r\u0131z. Bir d\u00fc\u011fmeye t\u0131klamak i\u00e7in <code>InvokePattern<\/code> kullan\u0131l\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>\n\/\/ InvokePattern'\u0131 almaya \u00e7al\u0131\u015fal\u0131m\nInvokePattern invokePattern = plusButton.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;\n\nif (invokePattern != null)\n{\n    \/\/ D\u00fc\u011fmeye t\u0131klama eylemini ger\u00e7ekle\u015ftir\n    invokePattern.Invoke();\n    Console.WriteLine(\"Topla d\u00fc\u011fmesine t\u0131kland\u0131.\");\n}\nelse\n{\n    Console.WriteLine(\"Topla d\u00fc\u011fmesi InvokePattern'\u0131 desteklemiyor.\");\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu ad\u0131mlar\u0131 takip ederek, YZ ajan\u0131n\u0131z art\u0131k Windows uygulamalar\u0131ndaki d\u00fc\u011fmeleri, uygulaman\u0131n dinamik yap\u0131s\u0131ndan veya g\u00f6rsel de\u011fi\u015fikliklerinden etkilenmeden, programatik ve g\u00fcvenilir bir \u015fekilde hedefleyip t\u0131klayabilir. Bu, otomasyon s\u00fcre\u00e7lerinizin kararl\u0131l\u0131\u011f\u0131n\u0131 ve g\u00fcvenilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<h2>Karma\u015f\u0131k Senaryolar ve \u0130leri D\u00fczey Teknikler: Dinamik UI&#8217;lar Nas\u0131l Y\u00f6netilir?<\/h2>\n<p>Windows UI Otomasyonu (UIA) temel d\u00fc\u011fme t\u0131klama i\u015flemlerinin \u00f6tesinde, dinamik ve karma\u015f\u0131k kullan\u0131c\u0131 aray\u00fczlerini (UI) y\u00f6netmek i\u00e7in bir dizi ileri d\u00fczey teknik sunar. YZ ajanlar\u0131n\u0131n ger\u00e7ek d\u00fcnya senaryolar\u0131nda ba\u015far\u0131l\u0131 olabilmesi i\u00e7in bu teknikleri anlamak ve uygulamak kritik \u00f6neme sahiptir. \u00d6zellikle elementlerin g\u00f6r\u00fcn\u00fcrl\u00fcklerinin de\u011fi\u015fti\u011fi, yeni pencerelerin a\u00e7\u0131ld\u0131\u011f\u0131 veya verilerin y\u00fcklenmesinin zaman ald\u0131\u011f\u0131 durumlar i\u00e7in UIA&#8217;n\u0131n esnekli\u011finden faydalanmal\u0131y\u0131z.<\/p>\n<h3>Dinamik \u0130\u00e7erik ve Bekleme Mekanizmalar\u0131<\/h3>\n<p>Modern uygulamalar genellikle asenkron (asynchronous) \u00e7al\u0131\u015f\u0131r; bir d\u00fc\u011fmeye t\u0131klad\u0131\u011f\u0131n\u0131zda hemen sonu\u00e7 gelmeyebilir, bir sonraki UI elementinin y\u00fcklenmesi zaman alabilir. YZ ajan\u0131n\u0131z\u0131n, bir elementin g\u00f6r\u00fcn\u00fcr veya etkin hale gelmesini bekleyebilmesi \u00f6nemlidir. Aksi takdirde, var olmayan bir elementi aramaya \u00e7al\u0131\u015f\u0131p hata verecektir. UIA, elementlerin \u00f6zelliklerini (\u00f6rne\u011fin <code>IsEnabled<\/code>, <code>IsOffscreen<\/code>) sorgulayarak bu bekleme durumlar\u0131n\u0131 y\u00f6netmenize olanak tan\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>\n\/\/ Bir elementin etkin hale gelmesini beklemek i\u00e7in basit bir d\u00f6ng\u00fc\nAutomationElement targetElement = null;\nint maxAttempts = 10;\nint currentAttempt = 0;\n\nwhile (targetElement == null && currentAttempt < maxAttempts)\n{\n    targetElement = parentElement.FindFirst(\n        TreeScope.Descendants,\n        new PropertyCondition(AutomationElement.AutomationIdProperty, \"dynamicButtonId\")\n    );\n\n    if (targetElement == null || !targetElement.Current.IsEnabled)\n    {\n        System.Threading.Thread.Sleep(500); \/\/ Yar\u0131m saniye bekle\n        currentAttempt++;\n    }\n}\n\nif (targetElement != null &#038;&#038; targetElement.Current.IsEnabled)\n{\n    Console.WriteLine(\"Dinamik d\u00fc\u011fme etkin hale geldi.\");\n    \/\/ \u015eimdi d\u00fc\u011fme ile etkile\u015fim kurabiliriz\n}\nelse\n{\n    Console.WriteLine(\"Dinamik d\u00fc\u011fme zaman\u0131nda etkin hale gelmedi.\");\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Daha geli\u015fmi\u015f senaryolar i\u00e7in, UIA'n\u0131n olay tabanl\u0131 (event-driven) yap\u0131s\u0131ndan faydalanarak belirli UI de\u011fi\u015fikliklerini dinleyebilirsiniz. \u00d6rne\u011fin, bir pencerenin a\u00e7\u0131lmas\u0131n\u0131 veya bir elementin g\u00f6r\u00fcn\u00fcrl\u00fck durumunun de\u011fi\u015fmesini izleyebilirsiniz. <code>AddAutomationEventHandler<\/code> metodu ile bu olaylara abone olabilirsiniz.<\/p>\n<h3>Hata Y\u00f6netimi ve Sa\u011flaml\u0131k<\/h3>\n<p>Otomasyon betikleri, beklenmedik durumlar kar\u015f\u0131s\u0131nda sa\u011flam (robust) olmal\u0131d\u0131r. Bir elementin bulunamamas\u0131, uygulaman\u0131n kilitlenmesi veya bir hatan\u0131n ortaya \u00e7\u0131kmas\u0131 gibi durumlar, YZ ajan\u0131n\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 durdurmamal\u0131d\u0131r. Try-catch bloklar\u0131 kullanarak UIA \u00e7a\u011fr\u0131lar\u0131n\u0131 sarmalamak ve uygun hata mesajlar\u0131 veya yeniden deneme mekanizmalar\u0131 eklemek \u00f6nemlidir.<\/p>\n<div class=\"code-container\">\n<pre><code>\ntry\n{\n    AutomationElement element = rootElement.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, \"Hedef Uygulama\"));\n    if (element == null)\n    {\n        throw new Exception(\"Hedef uygulama bulunamad\u0131.\");\n    }\n    \/\/ ... di\u011fer otomasyon ad\u0131mlar\u0131\n}\ncatch (ElementNotAvailableException ex)\n{\n    Console.WriteLine($\"Element bulunamad\u0131 veya eri\u015filemiyor: {ex.Message}\");\n    \/\/ Loglama yap veya farkl\u0131 bir eylem ger\u00e7ekle\u015ftir\n}\ncatch (Exception ex)\n{\n    Console.WriteLine($\"Genel bir hata olu\u015ftu: {ex.Message}\");\n    \/\/ Hata kurtarma stratejisi uygula\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<h3>TreeWalker ile Daha Esnek Gezinme<\/h3>\n<p><code>FindFirst<\/code> ve <code>FindAll<\/code> metotlar\u0131 belirli ko\u015fullara g\u00f6re elementleri bulmak i\u00e7in harikad\u0131r, ancak bazen bir elementin belirli bir ebeveyn (parent) veya karde\u015f (sibling) elementine g\u00f6re konumunu bulman\u0131z gerekebilir. <code>TreeWalker<\/code> s\u0131n\u0131f\u0131, UIA a\u011fac\u0131nda daha dinamik ve esnek bir \u015fekilde gezinmenizi sa\u011flar. \u00d6rne\u011fin, bir tablodaki her sat\u0131r\u0131 veya bir men\u00fcdeki her \u00f6\u011feyi i\u015flemek i\u00e7in <code>TreeWalker<\/code> kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>\nTreeWalker walker = TreeWalker.ControlViewWalker; \/\/ Yaln\u0131zca kontrol elementlerini gezer\n\nAutomationElement firstChild = walker.GetFirstChild(parentElement);\nwhile (firstChild != null)\n{\n    Console.WriteLine($\"Child element: {firstChild.Current.Name} ({firstChild.Current.ControlType.LocalizedControlType})\");\n    \/\/ Child element ile i\u015flemler yap\n    firstChild = walker.GetNextSibling(firstChild); \/\/ Sonraki karde\u015f elemente ge\u00e7\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<p><code>TreeWalker<\/code>, \u00f6zellikle <code>AutomationId<\/code> veya <code>Name<\/code> gibi g\u00fcvenilir tan\u0131mlay\u0131c\u0131lar\u0131n bulunmad\u0131\u011f\u0131 durumlarda veya bir grup benzer elementi i\u015flemek istedi\u011finizde \u00e7ok de\u011ferlidir. Elementlerin hiyerar\u015fik yap\u0131s\u0131n\u0131 kullanarak, daha sa\u011flam ve ba\u011flama duyarl\u0131 (context-aware) otomasyon betikleri yazabilirsiniz.<\/p>\n<h3>UI Odaklanma (Focus) ve Klavye Giri\u015fi<\/h3>\n<p>Bazen bir elementle etkile\u015fim kurmadan \u00f6nce ona odaklanman\u0131z (focus) gerekebilir. \u00d6zellikle klavye giri\u015fi yapmadan \u00f6nce metin kutusuna odaklanmak \u00f6nemlidir. <code>SetFocus()<\/code> metodunu kullanarak bir elemente odaklanabilirsiniz.<\/p>\n<div class=\"code-container\">\n<pre><code>\nAutomationElement textBox = parentElement.FindFirst(\n    TreeScope.Descendants,\n    new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)\n);\n\nif (textBox != null)\n{\n    textBox.SetFocus(); \/\/ Metin kutusuna odaklan\n    \/\/ \u015eimdi ValuePattern kullanarak metin girebiliriz\n    ValuePattern valuePattern = textBox.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;\n    if (valuePattern != null)\n    {\n        valuePattern.SetValue(\"Merhaba D\u00fcnya\");\n        Console.WriteLine(\"Metin kutusuna 'Merhaba D\u00fcnya' yaz\u0131ld\u0131.\");\n    }\n}\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu ileri d\u00fczey teknikler, YZ ajanlar\u0131n\u0131z\u0131n sadece basit d\u00fc\u011fmeleri t\u0131klamakla kalmay\u0131p, ayn\u0131 zamanda dinamik, karma\u015f\u0131k ve ger\u00e7ek d\u00fcnya Windows uygulamalar\u0131yla \u00e7ok daha sofistike ve g\u00fcvenilir bir \u015fekilde etkile\u015fim kurmas\u0131n\u0131 sa\u011flar. UIA'n\u0131n sundu\u011fu bu zengin ara\u00e7 seti, otomasyon s\u00fcre\u00e7lerinizin k\u0131r\u0131lganl\u0131\u011f\u0131n\u0131 azalt\u0131r ve uzun vadeli ba\u015far\u0131s\u0131n\u0131 garantiler.<\/p>\n<h2>Vaka Analizi: Yapay Zeka Ajan\u0131n\u0131n D\u00fc\u011fme Ka\u00e7\u0131rma Sorunu Nas\u0131l \u00c7\u00f6z\u00fcld\u00fc?<\/h2>\n<p>Bir e-ticaret \u015firketinin envanter y\u00f6netim sistemi (IMS - Inventory Management System) \u00fczerinde \u00e7al\u0131\u015fan bir YZ ajan\u0131 projesini d\u00fc\u015f\u00fcnelim. Bu ajan, tedarik\u00e7ilerden gelen yeni \u00fcr\u00fcn verilerini otomatik olarak sisteme girmek, stok seviyelerini g\u00fcncellemek ve belirli \u00fcr\u00fcnler i\u00e7in sipari\u015f olu\u015fturmakla g\u00f6revliydi. IMS, eski bir Windows masa\u00fcst\u00fc uygulamas\u0131yd\u0131 ve dinamik, ancak tutars\u0131z bir kullan\u0131c\u0131 aray\u00fcz\u00fcne (UI) sahipti. Ajan, \u00f6zellikle \u00fcr\u00fcn ekleme ve sipari\u015f onaylama ad\u0131mlar\u0131nda \"d\u00fc\u011fmeleri ka\u00e7\u0131rma\" sorunu ya\u015f\u0131yordu.<\/p>\n<h3>Sorun: K\u0131r\u0131lgan Otomasyon ve S\u00fcrekli Hatalar<\/h3>\n<p>Ba\u015flang\u0131\u00e7ta, YZ ajan\u0131 g\u00f6r\u00fcnt\u00fc tan\u0131ma ve X\/Y koordinatlar\u0131na dayal\u0131 bir RPA arac\u0131yla geli\u015ftirilmi\u015fti. Ancak k\u0131sa s\u00fcrede ciddi sorunlar ortaya \u00e7\u0131kt\u0131:<\/p>\n<ul>\n<li><strong>Dinamik Buton Konumlar\u0131:<\/strong> \u00dcr\u00fcn detaylar\u0131 girildikten sonra \"Kaydet\" d\u00fc\u011fmesi bazen pencerenin sa\u011f alt k\u00f6\u015fesinde, bazen de veri giri\u015finin uzunlu\u011funa g\u00f6re biraz daha yukar\u0131da veya a\u015fa\u011f\u0131da beliriyordu. Bu, X\/Y koordinatlar\u0131na dayal\u0131 t\u0131klamalar\u0131n s\u0131kl\u0131kla yanl\u0131\u015f yere gitmesine neden oluyordu.<\/li>\n<li><strong>Tema De\u011fi\u015fiklikleri:<\/strong> \u015eirket i\u00e7indeki baz\u0131 kullan\u0131c\u0131lar, ki\u015fisel tercihlerine g\u00f6re Windows'un klasik temas\u0131n\u0131 kullan\u0131rken, di\u011ferleri modern temalar\u0131 tercih ediyordu. Bu durum, \"Kaydet\" d\u00fc\u011fmesinin veya \"Sipari\u015f Onayla\" d\u00fc\u011fmesinin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc de\u011fi\u015ftiriyor, g\u00f6r\u00fcnt\u00fc tan\u0131ma algoritmalar\u0131n\u0131n d\u00fc\u011fmeleri bulmas\u0131n\u0131 engelliyordu.<\/li>\n<li><strong>Pop-up Pencereler:<\/strong> Bazen, bir \u00fcr\u00fcn kaydedildikten sonra \"\u0130\u015flem Ba\u015far\u0131l\u0131\" veya \"Onay Gerekli\" gibi k\u00fc\u00e7\u00fck pop-up pencereler beliriyordu. Bu pencereler, ana penceredeki d\u00fc\u011fmelerin \u00fczerini kapat\u0131yor ve ajan\u0131n yanl\u0131\u015f elementi t\u0131klamas\u0131na veya kilitlenmesine neden oluyordu.<\/li>\n<li><strong>Performans Sorunlar\u0131:<\/strong> Ajan\u0131n, her ad\u0131mda ekran\u0131 taray\u0131p g\u00f6r\u00fcnt\u00fc e\u015fle\u015ftirmesi yapmas\u0131, otomasyon s\u00fcrecini yava\u015flat\u0131yor ve \u00f6zellikle yo\u011fun saatlerde performans d\u00fc\u015f\u00fc\u015flerine yol a\u00e7\u0131yordu.<\/li>\n<\/ul>\n<p>Bu sorunlar nedeniyle, YZ ajan\u0131 g\u00fcnde birden fazla kez hata veriyor, manuel m\u00fcdahale gerektiriyor ve \u015firketin veri giri\u015f s\u00fcre\u00e7lerinde ciddi aksakl\u0131klara yol a\u00e7\u0131yordu. Otomasyonun vaat etti\u011fi verimlilik art\u0131\u015f\u0131 sa\u011flanam\u0131yor, aksine ek i\u015f y\u00fck\u00fc yarat\u0131yordu.<\/p>\n<h3>\u00c7\u00f6z\u00fcm: Windows UI Otomasyonuna Ge\u00e7i\u015f<\/h3>\n<p>Bu k\u0131r\u0131lganl\u0131\u011f\u0131 gidermek i\u00e7in, otomasyon ekibi YZ ajan\u0131n\u0131n UI etkile\u015fim katman\u0131n\u0131 Windows UI Otomasyonu (UIA) ile yeniden in\u015fa etmeye karar verdi. S\u00fcre\u00e7 \u015fu ad\u0131mlarla ilerledi:<\/p>\n<ol>\n<li><strong>Element Ke\u015ffi:<\/strong> Inspect.exe arac\u0131 kullan\u0131larak IMS uygulamas\u0131ndaki t\u00fcm kritik d\u00fc\u011fmelerin (Kaydet, \u0130ptal, Onayla, Kapat vb.) ve metin kutular\u0131n\u0131n <code>AutomationId<\/code> ve <code>Name<\/code> \u00f6zellikleri belirlendi. \u015eans eseri, uygulaman\u0131n eski olmas\u0131na ra\u011fmen bir\u00e7ok kontrol\u00fcn anlaml\u0131 <code>AutomationId<\/code>'leri vard\u0131. E\u011fer olmasayd\u0131, <code>Name<\/code> ve <code>ControlType<\/code> kombinasyonlar\u0131 kullan\u0131lacakt\u0131.<\/li>\n<li><strong>G\u00fcvenilir Element Bulma:<\/strong> Ajan\u0131n kodu, X\/Y koordinatlar\u0131 ve g\u00f6r\u00fcnt\u00fc e\u015fle\u015ftirmeleri yerine, UIA'n\u0131n <code>FindFirst<\/code> metodu ve <code>PropertyCondition<\/code>'lar\u0131 kullan\u0131larak elementleri bulacak \u015fekilde g\u00fcncellendi. \u00d6zellikle <code>AutomationElement.AutomationIdProperty<\/code> kullan\u0131ld\u0131.<\/li>\n<li><strong>Dinamik Bekleme Mekanizmalar\u0131:<\/strong> Pop-up pencereler veya belirli d\u00fc\u011fmelerin g\u00f6r\u00fcn\u00fcr hale gelmesi i\u00e7in UIA'n\u0131n olay i\u015fleyicileri (event handlers) ve basit bekleme d\u00f6ng\u00fcleri entegre edildi. \u00d6rne\u011fin, \"Kaydet\" d\u00fc\u011fmesine t\u0131kland\u0131ktan sonra, \"\u0130\u015flem Ba\u015far\u0131l\u0131\" pop-up'\u0131n\u0131n ortaya \u00e7\u0131kmas\u0131n\u0131 beklemek ve ard\u0131ndan onun \"Kapat\" d\u00fc\u011fmesini bulup t\u0131klamak i\u00e7in kod yaz\u0131ld\u0131.<\/li>\n<li><strong>Hata Y\u00f6netimi:<\/strong> Her UIA etkile\u015fimi, <code>try-catch<\/code> bloklar\u0131 i\u00e7ine al\u0131nd\u0131. Bir element bulunamad\u0131\u011f\u0131nda veya bir i\u015flem ba\u015far\u0131s\u0131z oldu\u011funda, ajan belirli bir hata g\u00fcnl\u00fc\u011f\u00fc (error log) olu\u015fturup, s\u00fcreci durdurmak yerine alternatif bir yol deneyecek veya y\u00f6neticilere bildirim g\u00f6nderecek \u015fekilde yap\u0131land\u0131r\u0131ld\u0131.<\/li>\n<li><strong>Kontrol Desenleri ile Etkile\u015fim:<\/strong> D\u00fc\u011fmeler i\u00e7in <code>InvokePattern<\/code>, metin kutular\u0131 i\u00e7in <code>ValuePattern<\/code> gibi uygun UIA kontrol desenleri kullan\u0131larak elementlerle standart ve g\u00fcvenilir bir \u015fekilde etkile\u015fim kuruldu.<\/li>\n<\/ol>\n<h3>Sonu\u00e7lar ve Kazan\u0131mlar<\/h3>\n<p>UIA'ya ge\u00e7i\u015fin ard\u0131ndan, YZ ajan\u0131n\u0131n performans\u0131 ve g\u00fcvenilirli\u011fi \u00f6nemli \u00f6l\u00e7\u00fcde artt\u0131:<\/p>\n<ul>\n<li><strong>%98 Ba\u015far\u0131 Oran\u0131:<\/strong> Ajan\u0131n g\u00f6rev tamamlama ba\u015far\u0131 oran\u0131 %60'lardan %98'lere \u00e7\u0131kt\u0131. Manuel m\u00fcdahale ihtiyac\u0131 neredeyse ortadan kalkt\u0131.<\/li>\n<li><strong>H\u0131z ve Verimlilik:<\/strong> Elementleri programatik olarak bulma, g\u00f6r\u00fcnt\u00fc taramas\u0131na g\u00f6re \u00e7ok daha h\u0131zl\u0131 oldu\u011fu i\u00e7in, her bir \u00fcr\u00fcn giri\u015f s\u00fcreci %30 oran\u0131nda h\u0131zland\u0131.<\/li>\n<li><strong>Bak\u0131m Kolayl\u0131\u011f\u0131:<\/strong> Uygulama g\u00fcncellemeleri veya UI'daki k\u00fc\u00e7\u00fck de\u011fi\u015fiklikler, UIA tabanl\u0131 otomasyonu etkilemedi. Yeni bir tema veya d\u00fc\u011fme konumu de\u011fi\u015fikli\u011fi, art\u0131k otomasyonu bozmuyordu.<\/li>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> \u00c7\u00f6z\u00fcm, farkl\u0131 Windows sistemlerinde ve farkl\u0131 kullan\u0131c\u0131 temalar\u0131nda tutarl\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131, bu da ajan\u0131n farkl\u0131 departmanlarda ve makinelerde kolayca da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flad\u0131.<\/li>\n<\/ul>\n<p>Bu vaka analizi, YZ ajanlar\u0131n\u0131n UI etkile\u015fimlerinde kar\u015f\u0131la\u015ft\u0131\u011f\u0131 \"d\u00fc\u011fme ka\u00e7\u0131rma\" gibi yayg\u0131n sorunlar\u0131n, Windows UI Otomasyonu gibi sa\u011flam ve yap\u0131sal bir \u00e7er\u00e7eve ile nas\u0131l etkili bir \u015fekilde \u00e7\u00f6z\u00fclebilece\u011fini a\u00e7\u0131k\u00e7a g\u00f6stermektedir. UIA, \u00f6zellikle masa\u00fcst\u00fc uygulamalar\u0131 i\u00e7in, otomasyon s\u00fcre\u00e7lerine g\u00fcvenilirlik, esneklik ve uzun vadeli s\u00fcrd\u00fcr\u00fclebilirlik kazand\u0131ran kritik bir teknolojidir.<\/p>\n<h2>Sonu\u00e7 ve Gelecek Perspektifleri<\/h2>\n<p>Yapay zeka (YZ) ajanlar\u0131n\u0131n ve robotik s\u00fcre\u00e7 otomasyonu (RPA) \u00e7\u00f6z\u00fcmlerinin, i\u015f s\u00fcre\u00e7lerini d\u00f6n\u00fc\u015ft\u00fcrme potansiyeli tart\u0131\u015f\u0131lmazd\u0131r. Ancak, bu potansiyelin tam olarak ger\u00e7ekle\u015febilmesi, ajanlar\u0131n kullan\u0131c\u0131 aray\u00fczleri (UI) ile g\u00fcvenilir bir \u015fekilde etkile\u015fim kurabilmesine ba\u011fl\u0131d\u0131r. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, X\/Y koordinatlar\u0131na veya g\u00f6rsel tan\u0131maya dayal\u0131 geleneksel otomasyon y\u00f6ntemleri, dinamik ve de\u011fi\u015fken Windows UI'lar\u0131 kar\u015f\u0131s\u0131nda s\u0131kl\u0131kla yetersiz kalmakta, YZ ajanlar\u0131n\u0131n \"d\u00fc\u011fmeleri ka\u00e7\u0131rmas\u0131na\" ve otomasyonun k\u0131r\u0131lgan hale gelmesine neden olmaktad\u0131r.<\/p>\n<p>Windows UI Otomasyonu (UIA), bu soruna Microsoft taraf\u0131ndan sunulan g\u00fc\u00e7l\u00fc ve yap\u0131sal bir yan\u0131tt\u0131r. UIA, UI elementlerini programatik \u00f6zellikler ve kontrol desenleri arac\u0131l\u0131\u011f\u0131yla tan\u0131mlayarak, otomasyon s\u00fcre\u00e7lerine e\u015fsiz bir sa\u011flaml\u0131k ve esneklik kazand\u0131r\u0131r. Bu sayede YZ ajanlar\u0131m\u0131z, ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc, uygulama konumu veya g\u00f6rsel tema de\u011fi\u015fikliklerinden etkilenmeden, elementleri g\u00fcvenilir bir \u015fekilde bulabilir ve onlarla etkile\u015fim kurabilir. Vaka analizimizde de g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, UIA'ya ge\u00e7i\u015f, otomasyon ba\u015far\u0131 oranlar\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rm\u0131\u015f, manuel m\u00fcdahale ihtiyac\u0131n\u0131 azaltm\u0131\u015f ve genel operasyonel verimlili\u011fi y\u00fckseltmi\u015ftir.<\/p>\n<p>UIA'n\u0131n sundu\u011fu <code>AutomationElement<\/code> nesneleri, <code>Control Patterns<\/code>, <code>Properties<\/code> ve <code>TreeWalker<\/code> gibi ileri d\u00fczey teknikler, sadece basit d\u00fc\u011fme t\u0131klamalar\u0131n\u0131n \u00f6tesine ge\u00e7erek, karma\u015f\u0131k ve dinamik UI senaryolar\u0131n\u0131n \u00fcstesinden gelmemizi sa\u011flar. Elementlerin g\u00f6r\u00fcn\u00fcr hale gelmesini beklemek, hata durumlar\u0131n\u0131 y\u00f6netmek veya UI a\u011fac\u0131nda esnek\u00e7e gezinmek, YZ ajanlar\u0131m\u0131z\u0131n ger\u00e7ek d\u00fcnya uygulamalar\u0131yla \u00e7ok daha sofistike bir \u015fekilde etkile\u015fim kurmas\u0131na olanak tan\u0131r. Bu, otomasyon projelerinin s\u00fcrd\u00fcr\u00fclebilirli\u011fi ve uzun vadeli ba\u015far\u0131s\u0131 i\u00e7in kritik bir fakt\u00f6rd\u00fcr.<\/p>\n<h3>Gelecek Perspektifleri<\/h3>\n<p>UIA'n\u0131n \u00f6nemi, yapay zeka ve otomasyonun gelece\u011finde daha da artacakt\u0131r. Hyperautomation (hiperotomasyon) ve Intelligent Process Automation (Ak\u0131ll\u0131 S\u00fcre\u00e7 Otomasyonu) gibi kavramlar yayg\u0131nla\u015ft\u0131k\u00e7a, YZ ajanlar\u0131n\u0131n yaln\u0131zca web tabanl\u0131 de\u011fil, ayn\u0131 zamanda masa\u00fcst\u00fc uygulamalar\u0131yla da sorunsuz entegrasyonu vazge\u00e7ilmez hale gelecektir. UIA, bu entegrasyonun temel ta\u015flar\u0131ndan birini olu\u015fturur.<\/p>\n<p>Geli\u015ftiricilerin ve otomasyon m\u00fchendislerinin, YZ ajanlar\u0131n\u0131 daha ak\u0131ll\u0131 ve dayan\u0131kl\u0131 hale getirmek i\u00e7in UIA'y\u0131 \u00f6\u011frenmeleri ve projelerinde aktif olarak kullanmalar\u0131 gerekmektedir. Bu, sadece mevcut sorunlar\u0131 \u00e7\u00f6zmekle kalmayacak, ayn\u0131 zamanda gelecekteki otomasyon ihtiya\u00e7lar\u0131na daha haz\u0131rl\u0131kl\u0131 olmam\u0131z\u0131 sa\u011flayacakt\u0131r. Unutmayal\u0131m ki, bir YZ ajan\u0131 ne kadar ak\u0131ll\u0131 olursa olsun, temel etkile\u015fim katman\u0131 k\u0131r\u0131lgan oldu\u011funda, t\u00fcm sistemin performans\u0131 d\u00fc\u015fecektir. UIA, bu temel katman\u0131 sa\u011flamla\u015ft\u0131rarak YZ'nin ger\u00e7ek potansiyelini ortaya \u00e7\u0131karmam\u0131za yard\u0131mc\u0131 olur.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ol>\n<li>\n            <strong>Windows UI Otomasyonu sadece Microsoft uygulamalar\u0131 i\u00e7in mi ge\u00e7erlidir?<\/strong><\/p>\n<p>Hay\u0131r, Windows UI Otomasyonu, .NET (WPF, WinForms), Win32, Java Swing\/AWT veya Qt gibi farkl\u0131 teknolojilerle yaz\u0131lm\u0131\u015f \u00e7o\u011fu Windows masa\u00fcst\u00fc uygulamas\u0131yla \u00e7al\u0131\u015fabilir. \u00d6nemli olan, uygulaman\u0131n UI elementlerini UIA \u00e7er\u00e7evesine if\u015fa etmesidir ki modern uygulamalar\u0131n \u00e7o\u011fu bunu yapar.<\/p>\n<\/li>\n<li>\n            <strong>UIA \u00f6\u011frenmek zor mu? Hangi dilleri kullanabilirim?<\/strong><\/p>\n<p>UIA'n\u0131n temel prensipleri anla\u015f\u0131l\u0131r olsa da, karma\u015f\u0131k senaryolar i\u00e7in biraz \u00f6\u011frenme e\u011frisi olabilir. Genellikle C# veya PowerShell gibi .NET dilleri ile en do\u011frudan ve g\u00fc\u00e7l\u00fc \u015fekilde kullan\u0131l\u0131r. Python i\u00e7in de <code>pywinauto<\/code> veya <code>UIAutomation<\/code> gibi k\u00fct\u00fcphaneler arac\u0131l\u0131\u011f\u0131yla UIA'ya eri\u015fim m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<\/li>\n<li>\n            <strong>UIA, web tabanl\u0131 uygulamalar i\u00e7in de kullan\u0131labilir mi?<\/strong><\/p>\n<p>Hay\u0131r, UIA \u00f6ncelikli olarak Windows masa\u00fcst\u00fc uygulamalar\u0131 i\u00e7in tasarlanm\u0131\u015ft\u0131r. Web tabanl\u0131 uygulamalar i\u00e7in Selenium, Playwright gibi taray\u0131c\u0131 otomasyon ara\u00e7lar\u0131 veya web elementlerinin DOM yap\u0131s\u0131na eri\u015fen di\u011fer k\u00fct\u00fcphaneler daha uygundur.<\/p>\n<\/li>\n<li>\n            <strong>UIA kullan\u0131rken performans sorunlar\u0131 ya\u015far m\u0131y\u0131m?<\/strong><\/p>\n<p>G\u00f6r\u00fcnt\u00fc tan\u0131ma gibi y\u00f6ntemlere k\u0131yasla UIA genellikle daha h\u0131zl\u0131d\u0131r \u00e7\u00fcnk\u00fc elementleri programatik olarak bulur. Ancak, \u00e7ok s\u0131k element aramalar\u0131 yapmak veya b\u00fcy\u00fck UI a\u011fa\u00e7lar\u0131nda gereksiz yere gezinmek performans\u0131 etkileyebilir. Etkili arama ko\u015fullar\u0131 ve olay tabanl\u0131 yakla\u015f\u0131mlar kullanarak performans\u0131 optimize edebilirsiniz.<\/p>\n<\/li>\n<li>\n            <strong>UIA'y\u0131 RPA ara\u00e7lar\u0131yla birlikte kullanabilir miyim?<\/strong><\/p>\n<p>Evet, bir\u00e7ok modern RPA arac\u0131, kendi yerle\u015fik UI otomasyon yeteneklerinin yan\u0131 s\u0131ra, geli\u015fmi\u015f veya karma\u015f\u0131k senaryolar i\u00e7in UIA entegrasyonuna izin verir. Bu, RPA'n\u0131n standart yeteneklerinin yetersiz kald\u0131\u011f\u0131 durumlarda UIA'n\u0131n g\u00fcc\u00fcnden faydalanarak daha sa\u011flam otomasyonlar olu\u015fturman\u0131z\u0131 sa\u011flar.<\/p>\n<\/li>\n<\/ol>\n<p>#YapayZeka #Otomasyon #WindowsUIAutomation #RPA #Teknoloji #Yaz\u0131l\u0131mGeli\u015ftirme<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/windows-ui-automation-notepad-example\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/windows-ui-automation-notepad-example<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Yapay zeka (YZ) ajanlar\u0131, g\u00fcn\u00fcm\u00fcz i\u015f d\u00fcnyas\u0131nda s\u00fcre\u00e7leri otomatikle\u015ftirmek, veri toplamak ve karma\u015f\u0131k g\u00f6revleri yerine getirmek i\u00e7in vazge\u00e7ilmez hale geldi.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-42096","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm\" \/>\n<meta property=\"og:description\" content=\"Yapay zeka (YZ) ajanlar\u0131, g\u00fcn\u00fcm\u00fcz i\u015f d\u00fcnyas\u0131nda s\u00fcre\u00e7leri otomatikle\u015ftirmek, veri toplamak ve karma\u015f\u0131k g\u00f6revleri yerine getirmek i\u00e7in vazge\u00e7ilmez hale geldi.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-27T06:04:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-27T06:05:23+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm\",\"datePublished\":\"2026-05-27T06:04:56+00:00\",\"dateModified\":\"2026-05-27T06:05:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/\"},\"wordCount\":4522,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/\",\"name\":\"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-27T06:04:56+00:00\",\"dateModified\":\"2026-05-27T06:05:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/","og_locale":"tr_TR","og_type":"article","og_title":"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm","og_description":"Yapay zeka (YZ) ajanlar\u0131, g\u00fcn\u00fcm\u00fcz i\u015f d\u00fcnyas\u0131nda s\u00fcre\u00e7leri otomatikle\u015ftirmek, veri toplamak ve karma\u015f\u0131k g\u00f6revleri yerine getirmek i\u00e7in vazge\u00e7ilmez hale geldi.","og_url":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-27T06:04:56+00:00","article_modified_time":"2026-05-27T06:05:23+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm","datePublished":"2026-05-27T06:04:56+00:00","dateModified":"2026-05-27T06:05:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/"},"wordCount":4522,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/","url":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/","name":"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-27T06:04:56+00:00","dateModified":"2026-05-27T06:05:23+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/yapay-zeka-ajanim-dugmeleri-kacirinca-windows-ui-otomasyonu-ile-cozum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Yapay Zeka Ajan\u0131m D\u00fc\u011fmeleri Ka\u00e7\u0131r\u0131nca: Windows UI Otomasyonu ile \u00c7\u00f6z\u00fcm"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=42096"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42096\/revisions"}],"predecessor-version":[{"id":42097,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42096\/revisions\/42097"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=42096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=42096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=42096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}