Vinnaren i pepparkakshustävlingen!
2018-09-03, 03:44
  #1
Medlem
Sprutnarkomans avatar
Det är något program som periodvis startar ett lika snabbt försvinnande svart kommandofönster och tar bort fokuset och helskärmen från mitt spel, så jag tänkte skriva ett program som loggar vilket program som är aktivt, namnet på det, sökvägen osv. Jag tror inte att Windows har en hook för när fokus eller aktivt program ändras (?) men man kanske kan kolla 100 ggr/sek eller liknande.

I alla fall vill jag inte skriva det i ett scriptspråk utan tänkte att jag skulle sätta mig in i Windows API ordentligt, fast det verkar som en jungel. Jag låter bli C99 eftersom Visual Studio inte stödjer det helt, om ens gcc gör det fullt ut, men har lite andra frågor:

* Vilket API ska man lära sig och använda? Tråkigt om man behöver köra programmet i kompatibilitetsläge. Är det .NET som gäller och i så fall vilken version? Är de helt bakåtkompatibla med varandra?

* Hur undviker man beroende av DLL-filer? Jag brukar ibland stöta på program som inte startar för att någon obskyr DLL saknas. Räcker det med att kompilera statiskt? Visst finns det en särskild DLL, MSnågonting.DLL som alla Windowsprogram behöver, kan man räkna med att den finns på alla system?

* Vilka saker ska man tänka på om man släpper programmet som källkod istället för en EXE? Någon #pragma som man måste ha, någon särskild funktion, någon #include? WinMain() behövs inte för konsollapplikationer eller?

Finns det en bra bok eller sida som tar upp det här utan att lära ut språket C samtidigt?
Citera
2018-09-03, 04:33
  #2
Medlem
splitfaces avatar
Citat:
Ursprungligen postat av Sprutnarkoman
Det är något program som periodvis startar ett lika snabbt försvinnande svart kommandofönster och tar bort fokuset och helskärmen från mitt spel, så jag tänkte skriva ett program som loggar vilket program som är aktivt, namnet på det, sökvägen osv. Jag tror inte att Windows har en hook för när fokus eller aktivt program ändras (?) men man kanske kan kolla 100 ggr/sek eller liknande.

I alla fall vill jag inte skriva det i ett scriptspråk utan tänkte att jag skulle sätta mig in i Windows API ordentligt, fast det verkar som en jungel. Jag låter bli C99 eftersom Visual Studio inte stödjer det helt, om ens gcc gör det fullt ut, men har lite andra frågor:

* Vilket API ska man lära sig och använda? Tråkigt om man behöver köra programmet i kompatibilitetsläge. Är det .NET som gäller och i så fall vilken version? Är de helt bakåtkompatibla med varandra?

* Hur undviker man beroende av DLL-filer? Jag brukar ibland stöta på program som inte startar för att någon obskyr DLL saknas. Räcker det med att kompilera statiskt? Visst finns det en särskild DLL, MSnågonting.DLL som alla Windowsprogram behöver, kan man räkna med att den finns på alla system?

* Vilka saker ska man tänka på om man släpper programmet som källkod istället för en EXE? Någon #pragma som man måste ha, någon särskild funktion, någon #include? WinMain() behövs inte för konsollapplikationer eller?

Finns det en bra bok eller sida som tar upp det här utan att lära ut språket C samtidigt?
Varför inte bara logga via Procmon?
Citera
2018-09-03, 17:45
  #3
Medlem
Vill du inte att ditt program ska vara beronde av dll filer så är det bara att skriva all kod i samma solution som då kompileras i din exe fil.

Om du till exempel bygger en dll med en funktion som skriver ut "Hello from DLL" och du sedan försöker anropa denna funktion från main funktion så kommer det ju självklart gå åt helvete om du raderar dll filen och sedan försöker köra ditt program.

Dll filer är väldigt praktiska men vill du somsagt undvika dll beroende program så skriv all kod i samma solution.
Citera
2019-09-15, 12:07
  #4
Medlem
När man installerar Visual Studio 2019 kan man filtrera efter språk och syfte (verkar som du vill skapa desktop program). Tror det finns två "windows plattformar", en gammal o en ny, men det finns typ miljarder wrappers i olika språk för dem...
Citera
2019-09-27, 03:19
  #5
Medlem
Trillskes avatar
"Fungerade och stabilt" => skriv i C# istället för C. Du bör kunna jacka in i alla windows-apier via en vanlig console app. .NET framework, skippa core, onödig risk när det är just windows du vill åt.

Ibland kan man få ont i huvudet av 32 vs 64-bit, i övrigt är det sällan problem.

EDIT: såg hur gammal tråden var. 😁
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback