#pragma once #include #include #include #include namespace fikatia { // Fikatia'yi COM SUNUCUSU yapan katman — FikatiaV2024'un win32com localserver // kaydinin C++ karsiligi. CATIA (VBA/CATScript) tarafindan: // Set fk = CreateObject("Fikatia.Sistem") ' kapaliysa exe'yi baslatir // Set fk = GetObject(, "Fikatia.Sistem") ' calisan ornege baglanir // Cagrilar STA mesaj pompasi uzerinden ANA thread'e gelir (kilit gerekmez). // Disari acilan otomasyon metodu: ad -> isleyici. Kullanan taraf (fikatia.exe) // kendi komutlarini kaydeder; bu katman UI/motor bilmez. struct SunucuMetod { std::wstring ad; // COM isimleri buyuk/kucuk harf duyarsiz eslestirilir // args NORMAL sirada verilir (Invoke'un ters dizilimi burada duzeltilmistir). std::function& args, _variant_t& donus)> isle; }; void sunucuMetodEkle(SunucuMetod m); // LocalServer kaydi HKCU\Software\Classes altina yazilir (yonetici GEREKMEZ). bool sunucuKayitYaz(); bool sunucuKayitSil(); // Calisan surecte class factory + aktif nesne kaydi (CoInitialize SONRASI cagrilir). bool sunucuBaslat(); void sunucuDurdur(); // CreateObject ile baglanan istemci sayisi (GetObject aktif-nesne paylasimi sayilmaz). // Kanca istemci baglaninca/ayrilinca ana thread'de cagrilir (STA — kilit gerekmez). int sunucuIstemciSayisi(); void sunucuIstemciKancasi(std::function kanca); } // namespace fikatia