Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1176to1180
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Taschenrechner sichtbar lassen

Taschenrechner sichtbar lassen
Niko
Hallo zusammen,
ich öffne mit:
Shell "calc.exe", vbNormalFocus
den Rechner.
Wie kann ich erreichen, dass der Rechner weiterhin sichtbar bleibt auch wenn ich in die Tabelle anklicke?
Danke für Eure Mühe und schönen Tag.
Niko

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Fenster immer im Vordergrund
22.09.2010 13:32:48
Klaus
Hallo Niko,
ich sag mal, mit normaler Excel-Funktionalität geht das nicht. Googel mal nach "Fenster immer im Vordergrund", da findet sich unter anderem das hier:
http://www.wer-weiss-was.de/theme119/article2561361.html#2561413
Wenn die verlinkten Programme funktionieren, könnte man die bestimmt (schlimmstenfalls per Sendkey) aus VBA fernsteuern.
Mal eine ganz andere Frage:
Warum? Was willst du mit dem Taschenrechner, wenn Excel bereits offen ist? Ich würd mir eher wünschen, dass Excel im Vordergrund bleibt wenn sich der Taschenrechner öffnet :-)
Grüße,
Klaus M.vdT.
Anzeige
AW: Fenster immer im Vordergrund
22.09.2010 15:14:52
Niko
Hallo Klaus,
vielen Dank für deine Anwort.
Die Frage wurde mir von einem Kunden gestellt und ich wollte sichergehen, dass es nicht doch einen 'Trick' für eine Lösung gibt.
Viele Grüße
Niko
AW: Fenster immer im Vordergrund
22.09.2010 15:42:44
Kawensmann
Hallo,
ich habe dazu mal was aus dem Netz zusammenkopiert ...
Statt mit "Shell" musst du calc.exe dabei mit "Shell2hWnd" aufrufen.
Option Explicit
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" ( _
ByVal hwnd As Long, _
lpdwProcessId As Long) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" ( _
ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function GetParent Lib "user32" ( _
ByVal hwnd As Long) As Long
Private Const GW_HWNDNEXT = 2
Sub calcTest()
Dim hwnd As Long
hwnd = Shell2hWnd("calc.exe", vbNormalFocus)
SetTopMostWindow hwnd, True
End Sub
Public Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) As Long
' Function sets a window as always on top, or turns this off
' hwnd - handle the the window to affect
' Topmost - do you want it always on top or not
On Error GoTo ErrHandler
If Topmost = True Then 'Make the window topmost
SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
Else
SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
'SetTopMostWindow = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, FLAGS)
SetTopMostWindow = False
End If
Exit Function
ErrHandler:
Select Case Err.Number
Case Else
Err.Raise Err.Number, Err.Source & "+modAPIStuff/SetTopMostWindow", Err.Description
End Select
End Function
' Anwendung starten und Fenster-Handle zurückgeben
Private Function Shell2hWnd(ByVal sFilename As String, _
Optional ByVal Mode As VbAppWinStyle)
Dim lngAppTaskID As Long
Dim lngProcTaskID As Long
Dim lnghWnd As Long
' TaskID der zu startenden Anwendung
lngAppTaskID = Shell(sFilename, Mode)
' Anwendung konnte nicht gestartet werden
If lngAppTaskID = 0 Then Exit Function
' Fenster durchlaufen und nach Process-ID suchen
lnghWnd = FindWindow(vbNullString, vbNullString)
Do While lnghWnd  0
' Existiert kein Eltern-Fenster, dann ProcssID
' ermitteln und mit TaskID vergleichen
If GetParent(lnghWnd) = 0 Then
GetWindowThreadProcessId lnghWnd, lngProcTaskID
' Handelt es sich um die gesuchte TaskID?
If lngProcTaskID = lngAppTaskID Then
' Fenster-Handle zurückgeben und Schleife
' verlassen!
Shell2hWnd = lnghWnd
Exit Do
End If
End If
' Nächstes Fenster
lnghWnd = GetWindow(lnghWnd, GW_HWNDNEXT)
Loop
End Function
Gruß
Kawensmann
Anzeige
AW: Fenster immer im Vordergrund
22.09.2010 16:37:04
Niko
Hallo
und vielen Dank für deine Mühe.
Ich werde den Programmcode morgen im Büro testen.
Viele Grüße
Niko

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige