ShellExecute_() bzw. RunProgram() als Pop-Up(!)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

ShellExecute_() bzw. RunProgram() als Pop-Up(!)

Beitrag von sbehrens »

Hi Leutz,
mit ShellExecute_() und RunProgram kann man mit zB.

Code: Alles auswählen

RunProgram("http://www.Pure-Board.de")
zu einer URL linken. Wenn aber im Hintergrund schon ein InetExplorer läuft (in dem man zB. seine eMails liest oder was auch immer), wird einfach die URL dieses Browsers geändert, das möchte ich aber verhindern, zB. durche ein Pop-Up. Es soll also eine neue Instanz des IE aufgemacht werden. Ich habe schon im Archiv gesucht, da habe ich nichts dazu gefunden (Die Frage wie man einen Link macht wurde aber echt irgendwie 20mal gestellt. :angry: ) und im CodeArchiv wurde auch einfach nur der API-Befehl benutzt, der den gleichen Effekt hat.
API-Guide hat geschrieben:If lpFile specifies an executable file, nShowCmd specifies how the application is to be shown when it is opened. This parameter can be one of the following values:
SW_HIDE
Hides the window and activates another window.
SW_MAXIMIZE
Maximizes the specified window.
SW_MINIMIZE
Minimizes the specified window and activates the next top-level window in the Z order.
SW_RESTORE
Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.
SW_SHOW
Activates the window and displays it in its current size and position.
SW_SHOWDEFAULT
Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.
SW_SHOWMAXIMIZED
Activates the window and displays it as a maximized window.
SW_SHOWMINIMIZED
Activates the window and displays it as a minimized window.
SW_SHOWMINNOACTIVE
Displays the window as a minimized window. The active window remains active.
SW_SHOWNA
Displays the window in its current state. The active window remains active.
SW_SHOWNOACTIVATE
Displays a window in its most recent size and position. The active window remains active.
SW_SHOWNORMAL
Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
Im WinAPI-Guide ist auch keine "Flag" die ich gebrauchen könnte. Geht das überhaupt?

Thx in advance.

mfG
Basti
enjoy life... while you can!
Benutzeravatar
computerkranker
Beiträge: 66
Registriert: 12.10.2004 21:21

Beitrag von computerkranker »

vieleicht hilft dir ja das /:->

Code: Alles auswählen

RunProgram("explorer","http://www.Pure-Board.de","")
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag von sbehrens »

Woha, Danke! So einfach ist das... Du bist ein Held :praise:
:mrgreen:

THX!

mfG
Basti

//Edit: Ich habe das jetzt alles gut hinbekommen, habe aber anstatt "explorer" "iexplore" genommen, bei "explorer" ging es teilweise nicht, wenn zB. die Seite mit php generiert wurde. (o.ä.) Ich würde noch gerne wissen, ob man das Pop-Up Window auch noch in einer bestimmten Größe öffnen kann, und vll. sogar, wie man bei dem neuen Fenster die Adress-, Standardbuttons- und Linkleiste deaktivieren kann (wenn das geht.)
enjoy life... while you can!
Benutzeravatar
computerkranker
Beiträge: 66
Registriert: 12.10.2004 21:21

Beitrag von computerkranker »

also meinst das jetzt so?

Code: Alles auswählen

Procedure IEPopup(x,y,xLen,yLen,url.s)
  Protected Result
  Result=OpenWindow(#PB_Any,x,y,xLen,yLen,#PB_Window_SystemMenu,url.s)
  If Result
    If CreateGadgetList(WindowID())
      WebGadget(#PB_Any,0,0,xLen,yLen,url.s)
    EndIf
  EndIf
  ProcedureReturn Result
EndProcedure


OpenWindow(1,0,0,100,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Test")
CreateGadgetList(WindowID())
ButtonGadget(1,0,0,100,24,"IE Window")

Repeat
  Select WindowEvent()
    Case #PB_Event_Gadget
      If EventGadgetID()=1 And EventType()=#PB_EventType_LeftClick
        If IsWindow(MainIEWindow)=#False
          MainIEWindow=IEPopup(100,100,200,200,"http://heise.de")
        EndIf 
      EndIf
    Case #PB_Event_CloseWindow
      If IsWindow(MainIEWindow) And EventWindowID()=MainIEWindow
        CloseWindow(MainIEWindow)
      ElseIf EventWindowID()=0
        Quit=#True
      EndIf 
  EndSelect
Until Quit
oder muss es unbedingt der ie selbst sein?
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag von sbehrens »

Ja stimmt, so könnte es auch funzen. Mir ist nur aufgefallen, dass das WebGadget() keine weiteren Pop-Ups zulässt, d.h. es wäre schon ganz gut, wenn man über RunProgram() (oder halt ShellExecute_()) die Größe des "Pop-Ups" bestimmen könnte. Trotzdem erstmal vielen Dank! Du hast mir sehr geholfen!

mfG
Basti
enjoy life... while you can!
Benutzeravatar
computerkranker
Beiträge: 66
Registriert: 12.10.2004 21:21

Beitrag von computerkranker »

sicherlich verstehe ich dich nicht richtig.
aber meinst du jetzt so einen schnulli :freak:

Code: Alles auswählen

NewList IEPopupID.l()

Procedure IEPopup(x,y,xLen,yLen,url.s) 
  Protected Result 
  Result=OpenWindow(#PB_Any,x,y,xLen,yLen,#PB_Window_SystemMenu,url.s) 
  If Result 
    If CreateGadgetList(WindowID()) 
      WebGadget(#PB_Any,0,0,xLen,yLen,url.s)
    EndIf
    AddElement(IEPopupID())
    IEPopupID()=Result
  EndIf 
  ProcedureReturn Result 
EndProcedure

Procedure IEPopupClose(id.l)
  ForEach IEPopupID()
    If IEPopupID()=id.l
      CloseWindow(id.l)
      DeleteElement(IEPopupID())
      Break
    EndIf
  Next
EndProcedure

OpenWindow(1,0,0,100,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Test") 
CreateGadgetList(WindowID()) 
ButtonGadget(1,0,0,100,24,"New Popup")
StringGadget(2,0,26,100,24,"http://purebasic.de")

Repeat 
  Select WindowEvent() 
    Case #PB_Event_Gadget 
      If EventGadgetID()=1 And EventType()=#PB_EventType_LeftClick 
        IEPopup(Random(200),Random(200),200,200,GetGadgetText(2)) 
      EndIf 
    Case #PB_Event_CloseWindow 
      If EventWindowID()=1
        Quit=#True 
      Else
        IEPopupClose(EventWindowID())
      EndIf 
  EndSelect 
Until Quit
MSDN....

Explorer Params

/root,object
Wenn Sie diesen Parameter angeben, wird der Pfad im Explorer als Root angezeigt (Sie können nicht weiter zurückblättern)

Beispiel: Explorer /e,/root,c:\windows\system

/e
Auf der linken Seite wird ein Verzeichnisbaum angezeigt. Wenn Sie diesen Parameter weglassen, wird im Explorer nur der Ordnerinhalt angezeigt.

/n
Öffnet immer einen neuen Explorer, auch wenn schon einer geöffnet ist.

subobject
Legt den Ordner fest, der den FOCUS erhält, wenn der Explorer gestartet wird. Als Standard ist root definiert. Ist nicht in Verbindung mit /SELECT möglich

/select
Legt fest, dass ein Ordner geöffnet wird und ein Objekt im Ordner selektiert ist

IExplore params

-channelband Internet Explorer as a Desktop Toolbar, displaying the
Channels Directory of the currently logged on user. This
option only applies when Active Desktop is off.

-e Launch Internet Explorer in Explorer mode (standard two
pane view, My Computer on left, Content on right)

-new Start up Internet Explorer in a separate process.

-nohome Open Internet Explorer and don't open any Web page at all.

-k Launch Internet Explorer in Kiosk mode.
Antworten