* PROGRAM BAŞLATICI - HER KULLANICI PROGRAMI SUNUCUDAN KOPYALAYIP KULLANIYOR
#DEFINE AYNI_ANDA "AYNI ANDA İKİ AYNI UYGULAMA ÇALIŞMAMALI"
#DEFINE UYGULAMA_ACIK "UYGULAMA AÇIK"
#DEFINE KAYNAK_YOK "kaynak dosya yok"
#DEFINE MUHTEMELEN "muhtemelen sunucuya bağlanmadınız"
#DEFINE SORUNU_COZEMEZSENIZ "SORUNU ÇÖZEMEZSENİZ SİSTEM SORUMLUSUNA DANIŞIN"
#DEFINE LUTFEN_BEKLEYIN "lütfen bekleyin"
#DEFINE YENI_SURUM "programın yeni sürümü kopyalanıyor"
#DEFINE CRT CHR(13)
LOCAL lokaldizin, kaynakdizin, lokaldosya, kaynakdosya, uygulama
ON ERROR RETURN
uygulama="exeirs9.exe"
lokaldizin="C:\atenuygulamalar"
dlldizin="\\tlsanasunucu\fox\vf9rf"
kaynakdizin="\\tlsanasunucu\fox"
* önce lokal bilgisayarda dizin oluştur ve vfp dll dosyaları kopyala...
SET PATH TO
IF ! DIRECTORY(lokaldizin)
MD(lokaldizin)
ENDIF
*vfp9r.dll
*vfp9t.dll
*vfp9renu.dll
*msvcr71.dll
*gdiplus.dll
*msvcr70.dll
*rar.exe && bunu program içinden kullanıyorum
IF !FILE(lokaldizin+"\vfp9r.dll")
kaynakdosya=dlldizin+"\*.dll"
lokaldosya=lokaldizin+"\*.dll"
COPY FILE &kaynakdosya TO &lokaldosya
kaynakdosya=dlldizin+"\rar.exe"
lokaldosya=lokaldizin+"\rar.exe"
COPY FILE &kaynakdosya TO &lokaldosya
ENDI
SET DEFA TO &lokaldizin
** PROGRAMIN ÇALIŞIP ÇALIŞMADIĞINI KONTROL ET
*IF uygulamaçik(JUSTFNAME(ADDBS(lokaldizin)+uygulama))
* =MESSAGEBOX(AYNI_ANDA,16,UYGULAMA_ACIK)
* RETU
*ENDI
kaynakdizin="\\tlsanasunucu\fox\prgexe"
lokaldosya=ADIR(dosyabilgilerilokal,uygulama) && lokal dizin: default
kaynakdosya=ADIR(dosyabilgilerikaynak,ADDBS(kaynakdizin)+uygulama) && kaynak dizin
IF kaynakdosya= 0 && kaynak yoksa çık
=MESSAGEBOX( KAYNAK_YOK+CRT+MUHTEMELEN,16,SORUNU_COZEMEZSENIZ)
RETU && QUIT
ENDI
IF lokaldosya=0 OR ; && ilk defa
! dosyabilgilerilokal[1,3]=dosyabilgilerikaynak[1,3] OR ;
! dosyabilgilerilokal[1,4]=dosyabilgilerikaynak[1,4]
WAIT WINDOW LUTFEN_BEKLEYIN+CRT+YENI_SURUM NOWAIT NOCLEAR
SET SAFE OFF && KULLANICIYA İNSİYATİF İÇİN KALDIRILABİLİNİR
kaynakdosya=ADDBS(kaynakdizin)+uygulama
lokaldosya=ADDBS(lokaldizin)+uygulama
COPY FILE &kaynakdosya TO &lokaldosya
SET SAFE ON
WAIT CLEAR
ENDIF
** uygulamayı başlat
lnWindowState = 9 && SW_SHOWNORMAL
lnhWnd = 0
lcop = 'open'
lcparms = ""
*lcfilename = " " ->lokaldosya=lokaldizin+uygulama
*lcpath = JUSTPATH(lcFilename) ->lokaldizin
lokaldosya=ADDBS(lokaldizin)+uygulama
DECLARE INTEGER ShellExecute IN Shell32;
INTEGER hWnd, STRING @lpOperation,;
STRING @lpFile, STRING @lpParameters,;
STRING @lpDirectory, INTEGER nShowCmd
lnresult = ShellExecute(0, @lcop, @lokaldosya,;
@lcparms, @lokaldizin, lnWindowState)
IF lnresult < 33 && Error occurred
IF lnresult = 31 && No file associated
DECLARE INTEGER GetSystemDirectory IN Win32API STRING @lpBuffer, INTEGER nSize
lnsize = 260
lcbuffer = SPACE(lnsize)
lnsize = GetSystemDirectory(@lcbuffer, lnsize)
IF lnsize > 0
lcbuffer = LEFT(lcbuffer, lnsize)
lcrundll = "RUNDLL32.EXE"
lcparms = "shell32.dll,OpenAs_RunDLL "
lnresult = ShellExecute(lnhWnd, @lcop, lcrundll,;
lcparms + lokaldosya, lcbuffer, lnWindowState)
ENDI
ENDI
ENDI
RETURN lnresult
***********************************************************
** UYGULAMA TEK ÇALIŞMALI
PROCEDURE uygulamaçik
** uygulamaçik("uygulama.exe")
PARAMETERS myApp
=ddesetoption("SAFETY",.F.)
ichannel = DDEINITIATE(myapp,"ZOOM")
IF ichannel =>0
=DDETERMINATE(ichannel)
RETU .t.&& QUIT
ENDI
=DDESETSERVICE(myapp,"define")
=DDESETSERVICE(myapp,"execute")
=DDESETTOPIC(myapp,"","ddezoom")
RETURN .f.
*********************************************************
PROCEDURE ddezoom
PARAMETER ichannel,saction,sitem,sdata,sformat,istatus
ZOOM WINDOW SCREEN MAX
RETURN
*kopyalanan dosyalar
IF !FILE(lokaldizin+"\vfp9r.dll")
kaynakdosya=dlldizin+"\vfp9r.dll"
lokaldosya=lokaldizin+"\vfp9r.dll"
COPY FILE &kaynakdosya TO &lokaldosya
kaynakdosya=dlldizin+"\vfp9t.dll"
lokaldosya=lokaldizin+"\vfp9t.dll"
COPY FILE &kaynakdosya TO &lokaldosya
kaynakdosya=dlldizin+"\vfp9renu.dll"
lokaldosya=lokaldizin+"\vfp9renu.dll"
COPY FILE &kaynakdosya TO &lokaldosya
kaynakdosya=dlldizin+"\msvcr71.dll"
lokaldosya=lokaldizin+"\msvcr71.dll"
COPY FILE &kaynakdosya TO &lokaldosya
kaynakdosya=dlldizin+"\gdiplus.dll"
lokaldosya=lokaldizin+"\gdiplus.dll"
COPY FILE &kaynakdosya TO &lokaldosya
ENDI