View Full Version : WinAPI32
Vorrei sapere dove posso trovare un tutorial sulle chiamte di sistema di Windows (so che si chiamano winapi32), io conosco quelle di Unix come fork, exec, etc., mi hanno detto che quelle di windows sono simili, ma non so qualle header chiamre quando programmo in C. Grazie
se ti hanno detto che sono simili probabilmente ti avranno detto tante di quelle baggianate da mettersi a ridere :D
cmq: le API di Windows (che sono dannatamente prolisse, fuffose, proprio come piacciono a me ;)) sono in una quantità semplicemente sconfinata, e sono documentate in estremo dettaglio nel sito del Microsoft Developer's Network (MSDN per gli amici ;)) che è accessibile in maniera completamente free dall'URL http://msdn.microsoft.com (però mi sa che devi vederlo per forza con IE perché con Firefox il frame laterale delle pagine della libreria si vede male); in particolare visita la libreria, all'url http://msdn.microsoft.com/library.
inoltre per utilizzare tutte queste meraviglie devi scaricarti (gratis ovviamente) il PSDK, ovvero il Platform Software Developer's Kit, il quale include tutti gli headers e i lib necessari per l'utilizzo delle Win32 (si chiamano Win32, non WinAPI32). ti ripeto che si tratta di librerie sconfinate, per apprendere anche solo come creare una finestra vuota ci metterai un po', ma una volta che hai più o meno capito la logica di funzionamento è facilissimo! una volta che sai come fare, capire il funzionamento di una nuova API è assolutamente immediato, io certe volte sono arrivato addirittura a *prevedere* l'esistenza di funzioni API (azzeccandoci :D)!
sapendole usare le Win32 sono estremamente semplici e allo stesso tempo potenti.
dimenticavo: una volta scaricato il PSDK, per iniziare a programmare ti dico subito due piccole cose:
1) l'entry point di un programma Win32 non si chiama "main", ma "WinMain" (ha un prototipo un po' strano, dettato più che altro da ragioni storiche, quando ancora gli HINSTANCE erano diversi dagli HMODULE :p)
2) nella maggior parte dei casi, l'unico header che devi includere è windows.h, che è il fulcro dell'inclusione di tutti gli altri headers necessari che importano le funzioni Win32 dalle varie DLL di Windows. in pochissimi altri casi potresti dover aggiungere qualche altro header; un caso particolare sono i programmi che usano i sockets (molto simili a quelli di Unix), i quali devono includere winsock2.h, ma non devono includere windows.h.
Grazie, per le info. Esiste qualche guida in italiano? Vorrei inoltre domandarti se esistone delle funzioni in win32 omologhe a quelle di unix tipo fork, exec, etc.
Di nuovo grazie :D
Grazie, per le info. Esiste qualche guida in italiano? Vorrei inoltre domandarti se esistone delle funzioni in win32 omologhe a quelle di unix tipo fork, exec, etc.
Di nuovo grazie :D
le guide in italiano anche se esistessero te le sconsiglierei di tutto cuore... cmq calcola che con le Win32 puoi fare semplicemente... tutto quello che si può fare in Windows ;)
infatti il subsystem Win32 è quello principale di qualsiasi versione di Windows (tranne quelle a 64 bit) e viene usato anche da quasi tutti i programmi interni del sistema operativo. nello specifico exec diventa CreateProcess (se vuoi il massimo della potenza) oppure WinExec (una cosa un po' più semplice) oppure ancora ShellExecute(Ex) (concettualmente diversa dalle due precedenti, utile anch'essa in certi casi); inoltre considera che anche in Windows puoi usare librerie standard del C/C++ e utilizzare funzioni standard come exec, le quali naturalmente sono implementate come wrappers delle Win32.
per quanto riguarda fork non lo so perché non so cosa fa.
VegetaSSJ5
14-05-2005, 20:13
per quanto riguarda fork non lo so perché non so cosa fa.
:eekk:
Futuregames
14-05-2005, 20:51
si ma io le avevo provate a imparare sono difficilissime :(
si ma io le avevo provate a imparare sono difficilissime :(
nnaaaa ;)
non ti ci sei impegnato, devi solo impegnarti all'inizio ;)
Futuregames
14-05-2005, 21:59
si.. vista un'applicazione con 800000 parametri per la gestione della finestra tutti con nomi molto belli^^
tipo ho capito prima assembly :rolleyes:
end.is.forever
14-05-2005, 22:38
si.. vista un'applicazione con 800000 parametri per la gestione della finestra tutti con nomi molto belli^^
tipo ho capito prima assembly :rolleyes:
Le Win32 sono le più brutte API di sistema di tutte, come del resto il sistema operativo su cui girano :)
Purtroppo sono ancora il modo più efficiente per accedere alla maggior parte delle funzioni di windows, almeno prima di Longhorn
Futuregames
14-05-2005, 23:51
Le Win32 sono le più brutte API di sistema di tutte, come del resto il sistema operativo su cui girano :)
Purtroppo sono ancora il modo più efficiente per accedere alla maggior parte delle funzioni di windows, almeno prima di Longhorn
parole sante (la prima frase)
[...] tipo ho capito prima assembly :rolleyes:
ne dubito...
Le Win32 sono le più brutte API di sistema di tutte, come del resto il sistema operativo su cui girano :)
se è solo questione di gusti sapessi il ribrezzo che mi provoca Linux... :Puke:
Purtroppo sono ancora il modo più efficiente per accedere alla maggior parte delle funzioni di windows, almeno prima di Longhorn
perché purtroppo? e comunque non sono il modo più efficiente, più potente casomai.
parole sante (la prima frase)
ma da che pulpito... e senti queste di parole: "Dev-C++ è ottimo!!!" sono sante anche queste?
non è per dire eh, assolutamente, ma, come dire, cioè, io non so, ho come una mezza idea che tu privilegi il software gratuito...
(NNNNUUUUUUUUUUUU...!!!!!!!!)
Futuregames
15-05-2005, 14:01
ecco un bel esempio di winzozziano...
io privilegio il software gratuito... preferisco opensource a closed, free a pagamento... e chi nn vorrebbe un software free se è buono rispetto a uno a pagamento...
guarda per il fatto dei compilatori io ODIO borland c++ 5 è anti-standard come odio visual studio perchè è casa microsoft... :D
per il fatto dell'assembly io lo sto imparando e ci sto capendo... mentre le win32 manco morto ci capivo
VegetaSSJ5
15-05-2005, 14:37
per il fatto dell'assembly io lo sto imparando e ci sto capendo... mentre le win32 manco morto ci capivo
se tu per capire l'assembly intendi imparare le singole istruzioni allora non sei nemmeno all'inizio della programmazione in assembly...
per il resto sono quasi d'accordo con te, tranne per il fatto dell'odio di un prodotto solo perchè è microsoft. a dirti la verità la microsoft non sta simpatica neanche a me però se fa un prodotto buono bisogna riconoscere tutti i meriti che ha. Io non ho mai provato nessun ide microsoft quindi non posso giudicare, però visti tutti i giudizi positivi che ricevono evidentemente è davvero così. Per me ad esempio winxp con sp2 è un ottimo prodotto, molto intuitivo, facile, veloce e abbastanza sicuro. E questo te lo dice un membro dello slackware clan del forum. :D
bisogna essere obiettivi nelle cose carcando di guardarle senza pregiudizi.
VegetaSSJ5
15-05-2005, 14:39
inoltre per quanto riguarda la programmazione di sistema sono d'accordo con futuregames e cioè che le api win32 non sono così facili da imparare (ma dico questo forse perchè ci ho dedicato poco tempo e voglia). le system call di linux secondo me sono più intuitive.
ecco un bel esempio di winzozziano...
ecco un bell'esempio di linuxista (questa me l'hai tirata fuori con le pinze! :))
io privilegio il software gratuito... preferisco opensource a closed, free a pagamento... e chi nn vorrebbe un software free se è buono rispetto a uno a pagamento...
e se invece quello a pagamento è migliore? :)
guarda per il fatto dei compilatori io ODIO borland c++ 5 è anti-standard come odio visual studio perchè è casa microsoft... :D
su questo punto VegetaSSJ5 ti ha risposto in maniera canonica
per il fatto dell'assembly io lo sto imparando e ci sto capendo... mentre le win32 manco morto ci capivo
stai dicendo una cosa semplicemente impossibile: se hai abbastanza cervello da capire cos'è un call gate, ne hai anche per capire come si crea una finestra in Win32 (certo, sempre che tu stia studiando l'assembly della IA-32 come penso, e non quello degli Z80...)
inoltre per quanto riguarda la programmazione di sistema sono d'accordo con futuregames e cioè che le api win32 non sono così facili da imparare (ma dico questo forse perchè ci ho dedicato poco tempo e voglia). le system call di linux secondo me sono più intuitive.
solo all'inizio, perché ripeto: una volta che ho cominciato (parlo per me) il resto mi sembrava così intuitivo da arrivare addirittura alla predizione :p
Futuregames
15-05-2005, 16:01
si ^^ win32 sono impossibili per me per ora...
sto imparando assembly per 8086 nn ancora a 32 bit e in modalità protetta ma reale...
si ^^ win32 sono impossibili per me per ora...
sto imparando assembly per 8086 nn ancora a 32 bit e in modalità protetta ma reale...
cioè tu mi stai facendo considerare la possibilità che tu non abbia abbastanza cervello da capire ne' i call gates ne' come si crea una finestra in Win32...? :D
allora rettifichiamo con un esempio di modalità reale: se hai abbastanza cervello da capire la differenza tra un puntatore NEAR e uno FAR, sicuramente ne hai anche abbastanza da capire come si crea bla bla bla. :)
...
(be', oddio, non lo so mica se questo esempio calza abbastanza... :mbe: )
end.is.forever
15-05-2005, 16:39
perché purtroppo? e comunque non sono il modo più efficiente, più potente casomai.
Scusa la mia ignoranza, ma esistono librerie più efficienti?
Scusa la mia ignoranza, ma esistono librerie più efficienti?
dipende: sui kernel NT esistono ad esempio le interfacce native che sono più efficienti perché sono più veloci. le Win32 però sono più potenti perché ti danno la sicurezza di una compatibilità più o meno universale (rimanendo sempre nell'ambito di sistemi Windows), perché sono documentate completamente e dettagliatamente, e perché ti permettono di fare molte più cose.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.