-
Posts
47 -
Joined
-
Last visited
Posts posted by vhanla
-
-
This is a code-snippet in Delphi that enumerates windows.
function EnumWindowsFunc(wHandle:THandle; List:TStringList):boolean; stdcall;
var
caption: array[0..256]of char;
dwStyle,dwexStyle: longint;
begin
dwStyle:=GetWindowLongPtr(wHandle,GWL_STYLE);
dwexStyle:=GetWindowLongPtr(wHandle,GWL_EXSTYLE);
if (dwStyle and WS_VISIBLE = WS_VISIBLE)
and (GetWindowText(wHandle,caption,sizeof(caption)-1)<>0)
and (GetParent(wHandle)=0)
and (whandle<>application.Handle){exclude me}
then
begin
if (dwexStyle and WS_EX_APPWINDOW=WS_EX_APPWINDOW)
and (GetWindow(wHandle,GW_OWNER)=whandle)
then List.Add(caption)
else if (dwexStyle and WS_EX_TOOLWINDOW =0 )
and (GetWindow(wHandle,GW_OWNER)=0)
then List.Add(caption);
end;
result:=true;
end;I guess TaskSwitchXP has something similar in its source code http://www.ntwind.com/software/taskswitchxp/download.html
Maybe it can be implemented on XWindowsDock so it can list only those apps that are shown in the taskbar.
Because, XWindowsDock list those apps that lays, for example, in systray. Or those that aren't shown in the taskbar, like :
- Windows Desktop Gadgets
- Switcher (a macosx expose clone for Windows Vista/7)
- Win+Tab sometimes is listed too (Windows Manager)
BTW: I'm still trying to port my old docklets
-
I moved the installed XWindowsDock directory to another folder in order to use it as a portable app and it works great. However, the Plugin Manager doesn't show the plugins inside the "public plugins" folder. Is there any registry o xml/ini file I have to modify?
Plugin Manager reads installation path from registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XWindows Dock_is1\
A string value contains InstallLocation, there you must change it to your current XWindowsDock path.
However, if you are trying to use it as a portable app, at least you need to create that entry into windows registry. Specially if you're not planning to install it, because the installation creates those entries in the windows registry.
Create a file with extension .reg and fill it with this text
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XWindows Dock_is1]
"InstallLocation"="X:\\XWindowsDock\\"Change InstallLocation to the correct XWindowsDock path
[ALTERNATIVE]
Well, to automate it and instead of editing the path, maybe this batch file could help, just create a file with extension either .bat o .cmd in the XWD folder with the following text:
@echo Installing into registry for this path: %CD%
SET _xwd=%CD%
SET _xwdpath=%_xwd:\=\\%
echo %_xwdpath%
(@echo Windows Registry Editor Version 5.00
echo.
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XWindows Dock_is1]
@echo "InstallLocation"="%_xwdpath%")> Register.reg
regedit.exe /s %CD%\Register.reg
del Register.regThis will create the .reg file and merge.
And there it is, only a double click on the new batch file will update the windows registry. However, LOCAL_MACHINE path requires Admin rights if I'm not wrong.
-
Wow!, this is awesome, thanks BOBAH13
Question: Is there any way to blacklist running apps? 'cause it is showing the Windows Desktop Gadgets which is not shown in the Windows taskbar, Switcher and others.
Other than that, I'm enjoying this great dock.
BTW: I'm reading the API, I hope I will start porting some of my old docklets for XWindowsDock 5.6+
Best regards!.
-
Since I installed Flash Player 10.1 beta it didn't work the OCX (Activex) with this application. But yesterday Adobe Labs published a new version (10.1 beta 3) which seems it fixes the OCX failure, and now I'm using it again. http://labs.adobe.com/technologies/flashplayer10/
-
This is pure gold, I just want to say, awesome. Congrats and best regards.
-
Yeah, OpenGL is very slow on Win7, I was trying to continu with my projects based on that and they are very slow, and also I don't know why Aero deactivates while running those OpenGL apps. At least that was my experience on Win7.
-
I happy to read this post. XWD II I can't wait to see the first pre-alpha, beta or even source code
Best Regards!
-
I was just about to report this. I got it on avast. Hook DLL.dll is a virus. No way in hell I'm installing this until that is gone.
EDIT: I could use it if I get the old Hook DLL.dll, can someone upload that please?
There is the older versions link in the first post, you can find in those files a previous Hook DLL.dll file. However, we don't know if they are 100% compatible, the only one who knows that is Komalo.
-
Version 0.2.3 Released, Check Main Post for more info
Thanks, Komalo, good job.
.
.
.
However....
I don't know if it happens to you guys too
AVG Free says "Hook DLL.dll" is a Trojan Backdoor Generic11.AJFF
So, I just used Hook DLL.dll from version 0.2 and works until now.
-
Wow! You are impressive.
Maybe you should change the license to a proper one, a software related one like GPL, Mozilla, MIT, etc... because I guess Creative Commons is mainly for non software, I mean, songs, poetry, drawing, articles, etc... correct me if I'm wrong.
And each source code file must be referenced to the license.
I wish I could help, but since I'm still learning I guess I won't do much. However, I will try as much as I can.
Regards!
-
Finally, I could compile it I'm so excited, thanks again.
However, I removed Parameters.pas because it uses a TXPanelMenu and TXPanel component which I couldn't find.
-
Oh man!! This is great, I can't believe it... thanks so much
-
Vlanla: Man can u try to install in Win 7 with your method? Just extract those files, rtename 19/21 file to EC...reg and install.cmd?
I did the same in mine Win 7 RC and works...
No luck here, maybe I need to install codecs or something else. It is an empty Windows 7, no programs yet...
I'm back with XP
-
Now I updated my video card driver, because I was using the default VGA driver but, it has the same error.
I thought "anyway... I can use FingerXP " but it also has a kernelbase.dll fault, maybe "XP" letters are there for some reason... he he
-
I tried to install in Windows 7 Ultimate version 6.1 (build 7260) but it shows the following message:
The module "ExplorerCoverFlow.dll" failed to load.
Make sure the binary is stored at the specified path or
debug it to check for problems with the binary or
dependent .DLL files.
The specified module could not be found.
I added dx8vb.dll to the dir and worked the regsvr32, but after that I activated the CoverFlow on the Explorer and the following message appears:
Run-time error '-2147418105(80010007)':
Automation error:
The callee(server[not server application])is not available and
disappeared; all connections are invalid. The call may have executed.
OK
And it closes explorer.exe and each time I try to execute the Windows Explorer, it shows :
Windows Explorer has Stopped Working
Windows is checking for a solution to the problem...
So I just uninstalled (manually) it to make the explorer work again.
Finally I tried to install using Setup.exe and asked me to replace the dll which were older than the windows7 ones, of course I didn't allow them to change with those older ones.
Installed and the same error hap
-
After Stand By state while Explorer Cover Flow running, it shows and error (alert) message:
Error '-2147418105(80010007)' en tiempo de ejecución:
Error de Automatización
OK
The error message is shown in Spanish language even tough I have an English version of Windows XP.
-
I suppose those registry values for settings are string values, then this exe can help you modify them.
Not really a flashy exe
However, I don't see any changes in my XP SP3 PC by modifying those values.
I re-downloaded to see if this works with the new one but it doesn't, I just post here to see if it's of any help to you guys.
-
I didn't installed with installer, I just extracted 6 files from the Cabinet file:
- ExplorerCoverFlow.dll
- loading.gif
- unknown.png
- 19.reg (I renamed to ECF_Install.reg so Install would call it)
- Install.cmd
- Uninstall.cmd
And run Install.cmd
After that I restarted the explorer window.
Works great, but I've seen that some video files appear in a different position without voice and too fast playback, maybe it needs an specific codec...
I have CBR and CBZ files which are comics, and actually are RAR and ZIP files with pictures inside and it shows their cover, love it
BTW: It's very slow, on my dual core laptop with XP SP3. However, I love it. Keep up the good work. Maybe you can take a look at the PictureFlow algorithm http://code.google.com/p/pictureflow/
I noticed that it has keystrokes delayed so it animates according to the queue, i.e. if I press right key many times and fast the animation seems to keep those keystrokes in a queue and is not responsive
-
I have Kaspersky 7 and it detects as Trojan-Spy.Win32.Delf.cb, http://www.2-spyware.com/remove-trojanspy-win32-delf.html
It injects in each process and the antivirus blocks on each process, even the open dialogs, save dialogs... even if it is not a trojan is very annoying because i have to be giving permissions to each process and not only the dll hook
-
Hi, I did a minmax hook to apply GenieFXLib and it works.
However, there are some applications I like, that restores and minimizes some applications, for example, WinExposé (it does that to minimized windows) among others.
And when this happens the hook does what it is meant to do (in this case, it interferes).
1:
I guess those windows are with alpha set to 0 and restored, so I need to find out that in order to not apply the effect, and some other Layered windows, because some of them have their rect different and since PrintWindow returns blank I think a bitblt screenshot must be done.
2:
In GenieFXLib I'm trying to replace the original window by hiding it and showing the effect window, but I've seen it occurs a little blink, I guess I have to first put the replacement over it and hide the original after that. But I couldn't do that and what I tried to do is to change the alpha (not minimize because my hook triggers again) to 0 of the window for example after the shrinking animation (before the minimization animation) and it doesn't work. I found that after modifying the width of the effect window on geniefx procedure, changing another window's alpha value doesn't work. I don't know why.
Edit
This was tested on XP only. http://codigobit.net/download/TaskFX.zip
-
Some other projects about genie effect
this is with Qt4
http://labs.trolltech.com/blogs/2008/12/15/genie-fx/
and this other one with Flex
http://www.madeinflex.com/2008/01/29/efect...o-genie-effect/ (this one in spanish)
Maybe they're of someone's interest
BTW: I took code from the first one :P
EDIT
I don't know how you're dealing with the other directions.
I was trying to do the following:
1st make a copy of the bitmap but rotated 90º degrees and change coordinates of sl,sr,st,sb,el,er,et,eb
to match the rotation
2nd proceed normally and rotate back the modified buffer to show with LWSetImage
Maybe there is a better approach
procedure RoR(
src,dst: pointer;
step,
count,
starting:cardinal);stdcall;assembler;
asm
pushad
mov ecx, count
mov edi, dst
mov esi, src
mov ebx, step
dec ebx
sub ebx, starting
add ebx, ebx
add ebx, ebx
xor edx, edx
@lll:
mov eax,[esi+edx]
mov [edi+ebx],eax
add ebx, step
add ebx, step
add ebx, step
add ebx, step
dec ecx
add edx, 4
cmp ecx,0
jnz @lll
popad
end;
procedure RoL(
src,dst: pointer;
step,
count,
starting:cardinal);stdcall;assembler;
asm
pushad
mov ecx, count
mov edi, dst
mov esi, src
mov ebx, starting
add ebx, ebx
add ebx, ebx
xor edx, edx
@lll:
mov eax,[esi+edx]
mov [edi+ebx],eax
add ebx, step
add ebx, step
add ebx, step
add ebx, step
dec ecx
add edx, 4
cmp ecx,0
jnz @lll
popad
end;
procedure CopyBuffer(dst, src: pointer; count:cardinal);stdcall;assembler;
asm
pushad
cld
mov ecx, count
mov esi, src
mov edi, dst
rep movsd
popad
end;
{
sl : start left
sr: start right
st: start top
sb: start bottom
el: end left
er: end right
et: end top
eb: end bottom
pgrap: pointer to bitmap
all relative to screen size
}
procedure TForm1.GenieFX(pbmp: pgrap;sl,sr,st,sb,el,er,et,eb:integer);
const
DURATION = 1000; // animation duration in milliseconds
var
i, j : Integer;
buffer,bmp, dmp:tbitmap;
bl, br : array[0..5000] of Integer; // bordes
al, at, ar, ab : Integer;
sk, ek : Double;
tick_s, tick_t : Cardinal;
t : Double;
y_ofs : Integer;
cbl, cbr : Integer;
buf: pbyte;
begin
//bmp is the manipulation buffer
bmp:=tbitmap.create;
bmp.PixelFormat:=pf32bit;
dmp:=tbitmap.create;
dmp.PixelFormat:=pf32bit;
buffer:=tbitmap.Create;
if (et>sb) then
begin
al := Min (sl, el);
at := Min (st, et);
ar := Max (sr, er);
ab := Max (sb, eb);
Left := al;
Top := at;
Width := ar-al;
Height := ab-at;
dec (sl, al); dec (st, at); dec (sr, al); dec (sb, at);
dec (el, al); dec (et, at); dec (er, al); dec (eb, at);
bmp.Height:=sb-st;
bmp.Width:=sr-sl;
bmp.Canvas.Draw(0,0,pbmp^);
buffer.Height := ab - at;
buffer.Width := ar - al;
// Force all bitmaps to 32 bits
pbmp^.PixelFormat := pf32bit;
buffer.PixelFormat := pf32bit;
// Bordes... de otra manera. ~Matonga
For i := st To et do
begin
sk := -Cos((et - i) / (et - st) * PI)*0.5+0.5;
ek := 1.0 - sk;
bl[i] := Round(sl * sk + el * ek);
br[i] := Round(sr * sk + er * ek);
end;
//Animamos el encogido
tick_s := GetTickCount;
tick_t := DURATION div 4;
While True do
begin
t := (GetTickCount - tick_s) / tick_t;
If t > 1.0 Then Break;
For i := 0 To buffer.Height-1 do
FillRGB32 (buffer.Scanline[i]^, buffer.Width);
sk := Cos(t * PI)*0.5+0.5;
ek := 1.0 - sk;
For j := 0 To bmp.Height-1 do
begin
cbl := Round(sl * sk + bl[j+st] * ek);
cbr := Round(sr * sk + br[j+st] * ek);
If (st+j >= 0) And (st+j < buffer.Height) Then
begin
LineBlit (bmp.Scanline[j], buffer.Scanline[st+j], bmp.Width, buffer.Width, cbl, cbr-cbl);
end;
end;
LWSetImage (self, buffer);
end;
{ahora dibujamos frames de bajada}
inc (tick_s, tick_t);
tick_t := DURATION *3 div 4;
While True do
begin
t := (GetTickCount - tick_s) / tick_t;
If t > 1.0 Then Break;
For i := 0 To buffer.Height-1 do
FillRGB32 (buffer.Scanline[i]^, buffer.Width);
y_ofs := st + Round((et-st)*t);
For j := 0 To bmp.Height-1 do
If (y_ofs+j >= st) And (y_ofs+j < et) And
(y_ofs+j >= 0) And (y_ofs+j < buffer.Height) Then
begin
LineBlit (bmp.Scanline[j], buffer.Scanline[y_ofs+j], bmp.Width, buffer.Width, bl[y_ofs+j], br[y_ofs+j]-bl[y_ofs+j]);
end;
LWSetImage (self, buffer);
end;
end
/////////////////////////////// LEFT ////////////////////////////////////////////
else if (er<sl)
and (et<sb) then
begin //animate to left
//so we need to make it relative to the rotation
Left := el;
i:=eb;
eb:=screen.Width-el;
el:=et;
et:=screen.Width-er;
er:=i;
i:=sb;
sb:=screen.Width-sl;
sl:=st;
st:=screen.Width-sr;
sr:=i;
al := Min (sl, el);
at := Min (st, et);
ar := Max (sr, er);
ab := Max (sb, eb);
Top := al;
Width := ab-at;
Height := ar-al;
dec (sl, al); dec (st, at); dec (sr, al); dec (sb, at);
dec (el, al); dec (et, at); dec (er, al); dec (eb, at);
bmp.Height:=sb-st;
bmp.Width:=sr-sl;
buffer.Height := ab - at;
buffer.Width := ar - al;
// Force all bitmaps to 32 bits
pbmp^.PixelFormat := pf32bit;
buffer.PixelFormat := pf32bit;
dmp.Height:=buffer.Width;
dmp.Width:=buffer.Height;
GetMem(buf,dmp.width*dmp.Height*4);
// rotamos la imagen /rotate image
for i:=0 to pbmp^.Height-1 do
RoL(pbmp^.ScanLine[i],buf,pbmp^.Height,pbmp^.Width,i);
for i:=0 to bmp.Height-1 do
CopyBuffer(bmp.scanline[i],pointer(integer(buf)+i*bmp.Width*4),bmp.width);
// Bordes... de otra manera. ~Matonga
For i := st To et do
begin
sk := -Cos((et - i) / (et - st) * PI)*0.5+0.5;
ek := 1.0 - sk;
bl[i] := Round(sl * sk + el * ek);
br[i] := Round(sr * sk + er * ek);
end;
//Animamos el encogido
tick_s := GetTickCount;
tick_t := DURATION div 4;
While True do
begin
t := (GetTickCount - tick_s) / tick_t;
If t > 1.0 Then Break;
For i := 0 To buffer.Height-1 do
FillRGB32 (buffer.Scanline[i]^, buffer.Width);
sk := Cos(t * PI)*0.5+0.5;
ek := 1.0 - sk;
For j := 0 To bmp.Height-1 do
begin
cbl := Round(sl * sk + bl[j+st] * ek);
cbr := Round(sr * sk + br[j+st] * ek);
If (st+j >= 0) And (st+j < buffer.Height) Then
begin
LineBlit (bmp.Scanline[j], buffer.Scanline[st+j], bmp.Width, buffer.Width, cbl, cbr-cbl);
end;
end;
// rotamos la imagen
for i:=0 to buffer.Height-1 do
RoR(buffer.ScanLine[i],buf,buffer.Height,buffer.Width,i);
for i:=0 to dmp.Height-1 do
CopyBuffer(dmp.scanline[i],pointer(integer(buf)+i*dmp.Width*4),dmp.width);
LWSetImage (self, dmp);
end;
{ahora dibujamos frames de bajada}
inc (tick_s, tick_t);
tick_t := DURATION *3 div 4;
While True do
begin
t := (GetTickCount - tick_s) / tick_t;
If t > 1.0 Then Break;
For i := 0 To buffer.Height-1 do
FillRGB32 (buffer.Scanline[i]^, buffer.Width);
y_ofs := st + Round((et-st)*t);
For j := 0 To bmp.Height-1 do
If (y_ofs+j >= st) And (y_ofs+j < et) And
(y_ofs+j >= 0) And (y_ofs+j < buffer.Height) Then
begin
LineBlit (bmp.Scanline[j], buffer.Scanline[y_ofs+j], bmp.Width, buffer.Width, bl[y_ofs+j], br[y_ofs+j]-bl[y_ofs+j]);
end;
// rotamos la imagen
for i:=0 to buffer.Height-1 do
RoR(buffer.ScanLine[i],buf,buffer.Height,buffer.Width,i);
for i:=0 to dmp.Height-1 do
CopyBuffer(dmp.scanline[i],pointer(integer(buf)+i*dmp.Width*4),dmp.width);
LWSetImage (self, dmp);
end;
freemem(buf);
end
else if (el>sr) and
(et<sb) then
begin
// animate to right
end
else if eb<st then
begin
//animate to top
end
else
begin
//??
end;
bmp.free;
dmp.free;
buffer.Free;
end;BTW: How can it be possible to animate many at the same time?
Like this video shows http://is.gd/WhrF
EDIT
Ha ha ha, I didn't notice the picture mirrored, to fix that, after RoL call
it should be
CopyBuffer(bmp.scanline[bmp.Height-1-i],pointer(integer(buf)+i*bmp.Width*4),bmp.width);
EDIT
(Back home after a bored day at the university) I forgot to upload this four side animation approach I did this morning
-
Thank you for sharing such amazing source codes, both of you.
Actually the latest Library (geniefx) was completely rewritten by Matonga, so the author becomes him, I gave an idea, tried to make it, but very slow.
BTW Systray doesn't work correctly on Vista 64bits, but on my XP pc works great. Hey vhanla, you could add that to that dock.That's from my XWD Systray Docklet, I can't test on Vista 64bit, because I don't have it (OS and Hardware).
-
Wow! Matonga, this is awesome, it's even faster than RKGenieEffectDX animation.
I've seen some crashes, I suppose it is due to starting bottom is greater than ending bottom, a minor problem.
Some ideas:
- It can have a different ending, for example, animate as a sand clock for fill a docklet
- warp animation at ending
- the limit is your imagination.
___________________________________________________
BTW: Here goes the Dock sample that uses this library, it is just a mess code, I do this for fun
Source Code included, so anyone can improve, port to other languages, etc...
-
Actually that was a sample, and since I'm not good at graphics manipulation, it is very slow...
BTW: I also need to know how to use RKLauncher's RKGenieEffectDX plugin if it's possible.
However, I have written it to use it as a library
Source Code and Sample included
http://codigobit.net/download/geniefxlib.rar
Messy code, hope you understand
It only works from top to bottom minimization's animation
Some questions:
- I am using a form with a transparent color and painting on its canvas. Is it faster if I use a layered window with alpha image instead?
- I'm using StretchBlt to draw line by line, is it faster to use scanlines, or gdiplus lockbits? I suppose yes, but I don't know how to do that, I mean a faster scanline stretch algorithm.
BTW: I also included a tasks dock binary (based on Matonga's mirror dock sample) as an example, to give and idea.
[release] Photobooth Clone!
in Application Releases
Posted
Here is an update of this app (thanks to Vigil for handing me out his source code)
Photobooth for Windows 7
Up until now I decided to update it for Windows 7.
New features:
- Support for Windows 7 win-tab (Flip3D)
- Added a shadow border
- Replaced WebBrowser (IE Component) with Flash OCX
Requirements:
- Latest Adobe Flash Activex installed (that one for Internet Explorer not for Firefox, Opera or any other browser)
- Some patience
NOTE: Video recording is not supported and will not unless the original author (Karthik Tharavaad) updates its work.
Get it here: Photobooth 4W7
Mirror: at Deviantart
Hope you like it