Použití funkcí Win API ve FOX Pro 

Při seznamování se s "BORLAN C++Builder", jsem zkoušel spouštět a zavírat z běžící aplikace jiné programy a posílat mezi nimy zprávy.
Když jsem to předváděl svému známému, projevil zájem o možnost tohoto využít i v aplikaci kterou má napsanou ve FOX Pro. V internetu jsem nic kloudného nenašel a většina foxkařů vědela sem tam že nějaké API existuje. Naštěstí jsem při hledání něčeho úplně jiného narazil na jednoduchý příklad jak volat externí funkce. Takže po několika experimentech se to nakonec podařilo. Asi to nebude 100% čistě napsáno, ale funguje to spolehlivě. Takže dávám to k dispozici tak jak to je, aby se ti kteří něco podobného budou potřebovat mohli něčeho chytit.
API funkce mohou ve FOXce zpřístupnit například i COMy pro jednoduché použití.



Jednoduché příklady pro FOX PRO


*------------------------------------------------------------
* Spusteni externiho programu
*------------------------------------------------------------
* pokud vrati mensi jak 32 tak se nepodarilo otevrit
* jmeno je vcetne cesty 

procedure RunProgram (jmeno)

 DECLARE INTEGER WinExec IN win32api string,integer

 d = WinExec(jmeno,1)

return d

*------------------------------------------------------------
* Ukonceni externiho programu,okna
* JmenoOkna je jmeno okna ve Windows ne jmeno spusteneho programu
* např program kalkulacka "CALC.EXE" ma jmeno okna "SciCalc"
* pokud nezname jmeno okna musime pouzit k jeho zjisteni
* nejakou systemovou util. 
*------------------------------------------------------------

procedure CloseProgram (JmenoOkna)

  #define WM_CLOSE      0x0010	 && dle winuser.h

  DECLARE INTEGER FindWindow IN win32api string,integer
  DECLARE INTEGER SendMessage IN win32api integer,integer,integer,integer

  CalHandle=FindWindow(JmenoOkna,0)
  d=SendMessage(CalHandle,WM_CLOSE,0,0)

return d

*------------------------------------------------------------
* Zaslani zpravy jinemu oknu, programu.
*------------------------------------------------------------

procedure SM_MAIN (JmenoOkna,Zprava)

    DECLARE INTEGER FindWindow IN win32api string,integer
    DECLARE INTEGER SendMessage IN win32api integer,integer,integer,integer

  d=0
  CalHandle=FindWindow(JmenoOkna,0)
  d=SendMessage(CalHandle,Zprava,0,0)

return d

*------------------------------------------------------------