1

Konu: Exe yapılan main form aktif olmuyor?

Merhabalar,

Projemde ilk başta küçük bir exe (ana main exe'den faklı)  ile sql bağlantı kontrolleri ve sürüm kontrollerini yapıyorum.
main.exe sürümü ve bilgileri sql veritabanında gömülü. main.exe yoksa yada yeni sürüm mevcutsa oradan download yapılıyor.
Bu küçük prgram işini bitirdikten sonra
    oSh = Createobject('WScript.Shell')
    oSh.Run("Main.exe R", 1)
    Release oSh
metoduyla gerçek programı çalıştırıyorum ve küçük connection exe prgmı release ediliyor..

Sorun burada, main.exe deki başlangıç formunda şifre giriş textbox unda cursor yanıp sönse dahi
mouse ile o formu click yapmadan bir şekilde aktif olmuyor.
Yani kullanıcılar connection prg. çalıştırıp main.exe ekrana gelinde otomatikman klavyeden
kullanıcı ve şifre tuşlamaya başlıyorlar ama form inaktif ya taskbardan aktiflenmeli yada formun üzerinde cliklenmeli.

Start formunun load, init v.s. eventlerinde app front in gibi win apilerinden window name'ini bulup
aktif etsemde bir türlü çözüme ulaşamadım.

Yardımlarınız için şimdiden teşekkür ederim.
Fox'la kalın.

Umuda bin kurşun sıksada ölüm, unutma
Umuda kurşun işlemez gülüm….

2

Re: Exe yapılan main form aktif olmuyor?

aradiginin yaniti burada olsa gerek
http://www.fox4um.com/topic/1545/formsetfocus-hk/ @ http://www.fox4um.com/post/9648/#p9648

http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpghttp://www.soykansoft.com/images/blogger.jpg

3

Re: Exe yapılan main form aktif olmuyor?

Ben bu sorunu tuhaf bir yolla çözdüm belki işine yarar


    Wait Window Nowait Transform(Date(),"@YL")  && bura kilit nokta formu çalıştırmadan önce bunu yapman
    Do Form UserGiris
    Read Events

ne derece mantıklı bilmem ama böylece aynı sorundan kurtulmuş oldum. kullanıcıya da sanki günün tarihini gösteriyormuşum gibi bir hava oluştu. Oysa derdim senin sorununla aynıydı
umarım çözüm olur..

4

Re: Exe yapılan main form aktif olmuyor?

Aslında benim tam aradığım

form hazır ise yada birinci sıradaki obje setfocus olduysa
o form tüm windows'da top form olup, aktif olması...
bunu yapabilen birçok program v.s. var...
o programlarda windows api'leri ile bu işi yapıyorlar.

Umuda bin kurşun sıksada ölüm, unutma
Umuda kurşun işlemez gülüm….

5

Re: Exe yapılan main form aktif olmuyor?

Soykan'in gonderdigini denedin mi?

Yen yaz 1907'ye yolla FB gelsin evinde yensin.
(sonra salaklar ciksin alin terine şike desin)

6

Re: Exe yapılan main form aktif olmuyor?

Evet üstadım,
ancak compile edilmiş olan;
exe olan ilk connection programı sql servere bağlanıp, sürüm kontrolü yapıp
main.exe yi yüklenip login formu ekrana gelinceye kadar
kullanıcı o arada kazara masaüstü yada masaüstünde herhangi bir ikon v.s.
kliklemişse yine inaktif....(always on top olsa dahi, bir şekilde keyboard ve mouse focusu onda değil...)

eski win sürümlerinde bu tip girilmesi gereken  zaruri formlarda taskbarda o form blink yapar ve en üst poz.gelerek aktif olurdu?

sırf bu yüzden api ve win func. gömüldüm
test yapıyorum....

Saygılar

Umuda bin kurşun sıksada ölüm, unutma
Umuda kurşun işlemez gülüm….

7

Re: Exe yapılan main form aktif olmuyor?

Hatta dikkat ettim olay anında
login formu ekranda görünüyor ama taskbarda yok ?
ne zaman mouse formun herhangi bir yerine götürüp kliklersem taskbar'da form adı beliriyor...
yada mousu ile değil de alt+tab ile geçilirse....

Umuda bin kurşun sıksada ölüm, unutma
Umuda kurşun işlemez gülüm….

8

Re: Exe yapılan main form aktif olmuyor?

Biraz Uçuk bir çözüm oldu ama
önerilerinizi beklerim..
foz'la kalın....


** formun init'ine
Thisform.AutoCenter= .F.
Thisform.AutoCenter= .T.
Thisform.AlwaysOnTop= .T. &&formu geçici olarak en üste aldım
Wait "" Window Timeout .2   && 200 milisny bekle
Thisform.Refresh
=setcurpos(Thisform.Left+2,Thisform.Top+2)  && foksiyon aşağıda...
Declare mouse_event In user32.Dll Long,Long,Long,Long,Long
=mouse_event(2,0,0,288,0)   && mouse left tuşu basıldı
=mouse_event(4,0,0,288,0)   && mouse left tuşu serbest bırakıldı yani formun sol üst köşesinden mouse ile kliklendi
Thisform.AlwaysOnTop= .F. && form eski ayarına döndü
Wait "" Window Timeout .2
Thisform.GotFocus()
...
..
..



Function SetCurPos(lnX, lnY)
** gönderilen parametrelerden x ve y belirtilmezse mouse ekranın tam ortasına gelecektir.
    lnX = Iif(Empty(lnX),Sysmetric(1)/2,lnX)
    lnY = Iif(Empty(lnY),Sysmetric(2)/2,lnY)
    Declare Integer SetCursorPos In WIN32API Integer lnX, Integer lnY
    Return Iif(SetCursorPos(lnX, lnY) = 1, .T., .F.)
Endfunc

Umuda bin kurşun sıksada ölüm, unutma
Umuda kurşun işlemez gülüm….