Search  
Wednesday, May 23, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Win32 API  pornirea unei a...
 pornirea unei aplicatii
 
 11/24/2006 11:13:40 AM
User is offlineAlin Berce
371 posts
3rd




pornirea unei aplicatii
 (Romania) Modified By Alin Berce  on 11/24/2006 12:17:04 PM)
Salut, abia acum incep sa folosesc si eu unele din avantajele win32api si inca imi sunt neclare foarte multe lucruri, insa cu ajutorul vostru/cititul unor articole sper sa ma mai luminez un pic. Am o aplicatie la care ii fac update de versiune. Acest lucru se intampla in felul urmator: aplicatia vfp datele pe sql server. Cand ma conectez la server din aplicatie verific daca versiunea curenta e executabilului corespunde cu versiunea dintr-o tabela de pe server. Daca nu corespunde, inchid aplicatia si rulez o alta aplicatie care se ocupa de inchidrea aplicatiei, stergerea fisierelor, copierea din retea a fisierelor noi. (versiune noua e prezenta intr-un director fix in retea). Treaba merge bine, insa mie nu imi place urmatorul lucru:
-dupa ce verific versiunea si vad ca e veche, pornesc programul care face update (update.exe). Pogramul update.exe il rulez asa:
x=curdir()+'update\update.exe'
run &x
Nu imi place faptul ca apare fereastra command din windows (de la run). As putea, folosind win32api sa pornesc programul update.exe ?


Inchiderea aplicatiei o fac asa:
lpWindowsTitle='Captionul ferestrei aplicatiei mele'
If !Isnull(lpWindowsTitle) And !Empty(lpWindowsTitle)
#Define WM_QUIT 16
Declare Long FindWindowA In Win32API String cNULL, String cWinName
Declare Integer SendMessage IN Win32API Integer HWND,Integer Msg, Short WParam, Integer LPARAM
sTitle = Alltrim(lpWindowsTitle)
iHwnd = FindWindowA(0, sTitle)
iReturn = SendMessage(iHwnd, WM_QUIT, 0, 0)
endif

Si ma gandeam ca daca o pot opri o por si porni, right ?

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 11/24/2006 1:02:22 PM
User is offlineaflorin
840 posts
1st


Re: pornirea unei aplicatii
 (N/A)
daca ambele sunt aplicatii de vfox, ar trebui sa mearga si

do (curdir()+'update\update.exe' )

nu?

Florin Aparaschivei - Iasi
 11/24/2006 5:54:58 PM
User is offlineigorea
6 posts


Re: pornirea unei aplicatii
 (Romania) Modified By igorea  on 11/24/2006 6:56:10 PM)
O alta varianta de pornire a lui update.exe ar fi urmatoarea:

DECLARE INTEGER ShellExecute IN shell32;
INTEGER hwnd,;
STRING lpOperation,;
STRING lpFile,;
STRING lpParameters,;
STRING lpDirectory,;
INTEGER nShowCmd

ShellExecute(0, 0, curdir()+"update\update.exe", "", 0, 1)

Al patrulea parametru de la ShellExecute() este, dupa cum se vede si in declararea functiei, stringul pt parametrii ("param1 param2").....eventual uita-te pe net dupa semnificatia exacta a fiecarui parametru
 11/24/2006 7:02:28 PM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: pornirea unei aplicatii
 (N/A)
Parca a mai fost discutata undeva posibilitatea de a face update la un program si acolo se propunea verificarea versiunii dintr-un program separat si apoi apelarea programului principal. Mi se pare o idee mai buna asta pentru ca nu mai inchizi programul principal daca ai de facut update la el. Dezavantajul este ca timpul de incarcare al programului va fi mai mare.

Alex Dobrin
Algis Info
 11/26/2006 3:35:40 AM
User is offlineedyshor
1450 posts
1st




Re: pornirea unei aplicatii
 (Romania) Modified By edyshor  on 11/26/2006 4:37:38 AM)
nu neaparat, poti folosi un hash pentru fiecare executabil tinut intr-un fisier special pentru verificare versiune,
- verificarea o fac din loader, daca hashurile executabilelor (de pe server si local) coincid, inseamna ca am executabilul la zi, daca nu, intreb userul daca vrea update (sau il anunt de update si il fac automat)
- daca nu vrei sa te complici, poati pune in loader cod sa creeze hash-urile pentru fiecare executabil in cazul in acre nu-l gaseste (se va face o singura data, de un singur loader, aici va dura mai mult, dar e o singura data)
- cand faci update shtergi hash-ul vechi ptr executabilul local, si-l creezi din nou
- cand pui noa versiune pe server, pur si simplu stergi hash-ul vechi si nu te mai doare capul (sa faci  tu un hash ma refer)
 
err, la ce te-ai referit cand ai zis ca dureaza mai mult ?!
 11/26/2006 4:09:16 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: pornirea unei aplicatii
 (N/A)
 
err, la ce te-ai referit cand ai zis ca dureaza mai mult ?!


Nici tu n-ai somn la ora asta? :)

Ma refeream la timpul scurs din momentul in care un user face click pe iconita si pana ajunge sa lucreze in program.
Daca este un singur executabil care verifica versiunea si apoi (daca nu e o noua versiune, asa cum se intampla in cele mai multe dintre cazuri) continua cu programul, timpul este mai scurt, fata de situatia in care se apeleaza un program de update, acesta verifica versiune si apoi apeleaza programul principal.

Mi se pare mai "curata" folosirea unui al doilea executabil, dar este mai "placuta" utilizatorului versiunea cu un executabil. Defapt sunt tot doua executabile, dar al doilea se foloseste doar daca exista o versiune mai noua.

Alex Dobrin
Algis Info
 11/26/2006 4:22:35 AM
User is offlineedyshor
1450 posts
1st




Re: pornirea unei aplicatii
 (Romania)
hehe .. asa sunt eu mai lunatec de felu meu :)
 
cat despre update, cam asa e, dar am implementat un launcher (ptr mai mule chestii nu doar un singur program) si timpul e neglijabil
 
ma gandesc la o chestie, daca programul tot se conecteaza la server, ce-ar fi sa-i spuna serverul care-i versiunea curenta a aplicatiei la fiecare conectare, iar daca programul vede ca-i o versiune diferita, avertizeaza utilizatorul (ca o sa dureze un pic) da jos noua versiune, il executa si se inchide pe sine, asa toata verificarea ar trece "neobservata" in timpi .. chestia e ca de fiecare data cand iese o versiune noua trebuie sa se faca un update pe server .. sau poate de asta se ocupa singur serverul .. hmm .. cu ce api pot monitoriza un folder ?! :)
 
 11/26/2006 4:50:05 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: pornirea unei aplicatii
 (N/A)
In ce sens monitoriza? Si de ce un folder si nu un fisier?

Tot dintr-o discutie anterioara stiu ca a sugerat cineva ca acel fisier sa fie tinut chiar pe serverul de baze de date. Mi se pare o idee excelenta, mai ales ca se pot pastra acolo toate versiunile prin care a trecut programul si asa se ajunge sa se poata face si downgrade nu numai upgrade.

Alex Dobrin
Algis Info
 11/26/2006 4:57:26 AM
User is offlineedyshor
1450 posts
1st




Re: pornirea unei aplicatii
 (Romania)
la asta ma refeream, stiu ca se poate monitoriza un folder pentru modificari fara ca monitorizarea sa impiedice operatiile din directorul respectiv, ideea ar fi ca in momentul in care s-a facut o modificare (s-a adaugat un fisier) serverul verifica versiunea fisierului, si sa adauge intr-o tabela versiunea si calea fisierului (sau chiar fisierul respectiv, zip-uit in prealabil)
 11/26/2006 5:08:29 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: pornirea unei aplicatii
 (N/A)
Interesant. Daca gasesti o solutie poate o scris si aici.

Alex Dobrin
Algis Info
 11/26/2006 5:57:28 AM
User is offlineedyshor
1450 posts
1st




Re: pornirea unei aplicatii
 (Romania)
 
  Visual FoxPro  Win32 API  pornirea unei a...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement