Avatar billede hekla Nybegynder
04. februar 2002 - 13:45 Der er 25 kommentarer og
3 løsninger

Åbne database i maximeret vindue

Jeg åbner én database fra en anden ved hjælp af nedenstående modul, som jeg har lånt fra et af terrys tidligere svar, men jeg kan ikke få det til at åbne den nye database i et maximeret vindue. Jeg er kommet frem til at det er hwnd værdien, som ikke skal være 0, men jeg kan ikke finde den rigtige værdi.
Er der nogen som kan hjælpe?

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Const SW_HIDE = 0
Public Const SW_SHOW = 5

Function OpenDb() as integer
Dim result As Integer
       
    result = ShellExecute(0, "Open", "YourDatabase.mdb", "", "C:\temp", SW_SHOW)

   
end function
Avatar billede puppetmaster Nybegynder
04. februar 2002 - 13:51 #1
Det kan terry nok, giv ham et par min til at læse dit spørgsmål! :)
Avatar billede terry Ekspert
04. februar 2002 - 13:54 #2
You can have a startup form when your database opens. In the On load even add
docmd.maximize
Avatar billede terry Ekspert
04. februar 2002 - 13:55 #3
almost 3 minutes!
Avatar billede hekla Nybegynder
04. februar 2002 - 14:05 #4
I have a startup form, but I don't want to maximize that. I want to maximize the Access window so that the size of the Access window don't resize my startup form.
I think it's a matter of finding the right hwnd value, but I can't find these values anywhere.
Avatar billede terry Ekspert
04. februar 2002 - 14:47 #5
It is possible to use the windows API call (ShowWindow) to maximize Access, but as you mention yourself you need the windows handle (Hwnd) to be able to do this and I am not quiet sure how to do this.
Avatar billede karlslund Nybegynder
04. februar 2002 - 14:59 #6
Public Const SW_MAXIMIZED = 3
Avatar billede terry Ekspert
04. februar 2002 - 15:08 #7
more info please karlslund!
Avatar billede terry Ekspert
04. februar 2002 - 15:11 #8
result = ShellExecute(0, "Open", "YourDatabase.mdb", "", "C:\temp", 3)
Avatar billede karlslund Nybegynder
04. februar 2002 - 15:15 #9
Jeg troede svaret var klart nok, han efterlyste hvad værdien for MAXIMIZED skulle være. Og det svarede jeg på :)
Avatar billede hekla Nybegynder
04. februar 2002 - 15:36 #10
result = ShellExecute(0, "Open", "YourDatabase.mdb", "", "C:\temp", 3)
result = ShellExecute(0, "Open", "YourDatabase.mdb", "", "C:\temp", SW_MAXIMIZED)
result = ShellExecute(3, "Open", "YourDatabase.mdb", "", "C:\temp", SW_MAXIMIZED)

Ingen af dem virker :o(

Jeg forhøjer til 60p, hvis man kan
Avatar billede terry Ekspert
04. februar 2002 - 15:49 #11
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Const SW_HIDE = 0
Public Const SW_MAXIMIZED = 3
Public Const SW_SHOW = 5

Function OpenDb() as integer
Dim result As Integer
       
    result = ShellExecute(0, "Open", "YourDatabase.mdb", "", "C:\temp", SW_MAXIMIZED)

   
end function 

This works here! What operating system are you using, although I cant see why it shouldnt
Avatar billede hekla Nybegynder
04. februar 2002 - 16:00 #12
Jeg bruger XP Pro, og det virker ikke her.
Avatar billede karlslund Nybegynder
04. februar 2002 - 16:01 #13
Doesn't work here (Access 2002), darn!

Kigger på det senere.
Avatar billede hekla Nybegynder
04. februar 2002 - 16:12 #14
terry, har du et reference bibliotek slået til, som vi andre ikke har?
Avatar billede terry Ekspert
04. februar 2002 - 18:22 #15
shellExecute is a Windows API call, so no references are needed. It may very well be possible that some API calls react differently between different versions of Windows.
Avatar billede karlslund Nybegynder
05. februar 2002 - 10:17 #16
Jeg tror snarere at det er Office XP (lavet af Microsoft) der skider på den ShellExecute standard (også lavet af Microsoft).

It's a feature, not a bug :)

Hvordan konverterer man en HPROCESS til en HWND for at få den launchede applikations hovedvindue?
Avatar billede terry Ekspert
05. februar 2002 - 10:27 #17
Where are you getting HPROCESS from?

Here's a link to Microsoft MSDN API
http://msdn.microsoft.com/library/?url=/library/en-us/win32/win32start_1xyd.asp
Avatar billede karlslund Nybegynder
05. februar 2002 - 10:33 #18
Du får en HPROCESS fra ShellExecuteEx. Jeg har selv hele Win32 API'et, men kan ikke finde noget om hvordan man finder en window handle ud fra en process handle. Det MÅ man da kunne!
Avatar billede hekla Nybegynder
05. februar 2002 - 10:49 #19
Mine databaser er lavet i Office 2000, så du kan ikke give Ofiice XP skylden, karlslund :o)
Avatar billede terry Ekspert
05. februar 2002 - 10:57 #20
OK! In the Shellexecute it is possible to use SW_SHOWMAXIMIZED which also activates the window, then there should be an API to get the hwnd of the active window, or?
Avatar billede faroe Nybegynder
05. februar 2002 - 14:42 #21
Den fungerer :-)

Private Sub test_Click()

    Call Shell("msaccess.EXE C:\mappenavn\databasenavn.mdw", 3)

End Sub
Avatar billede karlslund Nybegynder
05. februar 2002 - 15:00 #22
Ja, Terry, men det er lidt af et hack. Hvad nu hvis brugeren switcher app i mens, etc ...

Nu ser vi lige om farce's løsning fungerer for hekla.

Men der er da ikke path til MSaccess.exe som default??
Avatar billede terry Ekspert
05. februar 2002 - 15:01 #23
but why should shell work and shellececute not?
Avatar billede karlslund Nybegynder
05. februar 2002 - 15:09 #24
My guess is it's because it calling MSACCESS.EXE directly, and when we use ShellExecute it call's Explorer and has that launch MS Access for us.

So the MAXIMIZE parameter is lost, as the temporary process executing the application for us is not visible and closed quickly thereafter.

That's what I THINK happens.

Ææææh, nu fik du lokket mig til at skrive svaret på engelsk :)
Avatar billede terry Ekspert
05. februar 2002 - 15:23 #25
Hehe.. well it went very well, keep it up :o)
Avatar billede hekla Nybegynder
05. februar 2002 - 15:59 #26
Tak for hjælpen. faroe's forslag virker, så han får pointene.
Jeg forhøjer med 20, og giver terry og karlslund 10 hver for indsatsen.
Avatar billede terry Ekspert
05. februar 2002 - 18:25 #27
Thanks! That puzzles me though!
Avatar billede karlslund Nybegynder
05. februar 2002 - 22:28 #28
Oss' mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester