Taskbar Extensions (Win7)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

JimBobBalou

Betreff: Taskbar Extensions (Win7)

BeitragSo, Jan 10, 2010 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Die neue Taskleiste von Windows 7 kann auch den Ladefortschritt (z.b. beim Kopieren von Dateien, aber auch bei vielen 3rd-party Programmen) als grünen Balken im Programmbutton anzeigen. Ich habe auch schnell die passende Seite auf MSDN gefunden, aber wie soll man das in BB umsetzen Question Question Question
Link zum MSDN-Artikel

Nicdel

BeitragSo, Jan 10, 2010 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wäre sicher möglich, indem man eine DLL schreibt. Ich schau mir das mal an.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Jo0oker

BeitragSo, Jan 10, 2010 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, ist ja gut dokumenteirt.

Benutzt einfach die WinAPI und schreib dir dann nen C++ Wrapper plus userlib.

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!

JimBobBalou

BeitragMo, Jan 11, 2010 8:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo0oker hat Folgendes geschrieben:
...schreib dir dann nen C++ Wrapper plus userlib...


Wie macht man das???

Pummelie

BeitragMo, Jan 11, 2010 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
C++ lernen, und dann einen Userlib in darin schreiben, die die Befehle an die Win API übergibt.

Oder du fragst jemanden der das kann.
It's done when it's done.

JimBobBalou

BeitragMo, Jan 11, 2010 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ich blick da nich durch
WIE MACHT MAN DAS, WARUM GEHT DAS SO NICHT? Crying or Very sad
Code: [AUSKLAPPEN]
#if defined(_MSC_VER)
#include <windows.h>
#define DLL extern "C" __declspec(dllexport)
#else
#define DLL
#endif
DLL int TaskbarProgressState (int hwnd, int flag)
{
int SetProgressState(int hwnd, int flags);
}
DLL int TaskbarProgressValue (int hwnd, int completed, int total)
{
int SetProgressValue(int hwnd, int completed, int total);
}

Starwar

BeitragMo, Jan 11, 2010 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
VisualC++ von der MS-Website installieren, (Visual)C++ lernen, die Windows API verstehen und dann das benutzen.
MFG

Hip Teen

BeitragMo, Jan 11, 2010 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal ganz ehrlich, das kann man doch auch "nativ" in BB machen, oder?
Hab kein Win 7 drauf, deswegen kann ich das nicht umsetzen, aber es müsste doch reichen, ne passende Decls zu schreiben für die explorerframe.dll für die beiden Methoden. Wenn man sich das anschaut:
Zitat:
HRESULT SetProgressState(
HWND hwnd,
TBPFLAG tbpFlags
);

HWND kann man ja rausfinden, bei B+ ging das easy, aber ich bin mir sicher, dass es auch bei den anderen Versionen es ein Weg gab. TBPFLAG ist ne Konstante in Form einer Hex Zahl, nach 2 Sek. google hat man die passende Werte raus. Genauso bei der anderen:
Zitat:
HRESULT SetProgressValue(
HWND hwnd,
ULONGLONG ullCompleted,
ULONGLONG ullTotal
);

HWND wie oben, ULONGLONG kann man entweder direkt als Integer übergeben oder wenn das nicht funktioniert bastelt man sich das aus einer Bank (hab jetzt auf die schnelle nicht gefunden, wie genau so ein ULONGLONG aussieht).

Wo ist jetzt die Hürde, das in BB zu machen?
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

Nicdel

BeitragMo, Jan 11, 2010 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Methoden stehen nicht in der DLL Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Goodjee

BeitragMo, Jan 11, 2010 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
laut msdn tun sie das sehr wohl http://msdn.microsoft.com/de-d...85%29.aspx
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Nicdel

BeitragMo, Jan 11, 2010 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Laut Dependency Walker und Blitz3D tun sie es nicht.

Edit: Ich hab's gerade mit einer DLL versucht, seltsamerweise gibt es eine MAV in BB, obwohl GetLastError eine 0 zurückgibt und der Fortschritt angezeigt wird Confused
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Silver_Knee

BeitragMo, Jan 11, 2010 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
wirst den Stack nicht gescheit säubern weils ne Methode ist...
 

ChristianK

BeitragMo, Jan 11, 2010 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Es handelt sich da um COM-Objekte, die erst erstellt werden müssen. -> http://msdn.microsoft.com/en-u...S.85).aspx
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Nicdel

BeitragDi, Jan 12, 2010 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@ChristianK: Das mache ich schon.
In BlitzMax bekomme ich keinen Fehler, die DLL und ein Beispiel ist im Archiv hochgeladen ( Arrow https://www.blitzforum.de/upload/file.php?id=7799).
In BB bekomme ich immernoch eine MAV ohne Grund.
Der jetztige Code (VC++ 2010):
Code: [AUSKLAPPEN]
BBDECL void ShowProgress(HWND hwnd, int completed, int total, int state)
{

   ITaskbarList3 *tl3 = NULL;

   HRESULT hr = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
    __uuidof(ITaskbarList3), (void **)&tl3);

   hr = tl3->HrInit();

   hr = tl3->SetProgressValue(hwnd, completed, total);
   hr = tl3->SetProgressState(hwnd, (TBPFLAG) state);

}
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

ChristianK

BeitragDi, Jan 12, 2010 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die Funktion als __stdcall deklarieren, sonst wird, wie Silver_Knee schon gesagt hat, der Stack nicht aufgeräumt.

Code: [AUSKLAPPEN]
BBDECL void __stdcall ShowProgress(HWND hwnd, int completed, int total, int state)

Wäre auch ganz gut, wenn du die CRT statisch linkst. Hat ja nicht jeder VS 2010 installiert. Very Happy
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group