Jump to content

vhanla

Member
  • Posts

    47
  • Joined

  • Last visited

Posts posted by vhanla

  1. Here is an update of this app (thanks to Vigil for handing me out his source code)

    photobooth_for_windows_7_by_vhanla-d41sr6r.png

    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 :)

  2. 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 :P

  3. 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.reg

    This 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.

  4. 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!.

  5. 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.

  6. 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!

  7. 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 :lol:

  8. 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

  9. 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.

  10. I suppose those registry values for settings are string values, then this exe can help you modify them.

    Not really a flashy exe :P

    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.

    ECFSettings.zip

  11. 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

    Untitled1.jpg

    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

  12. 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

  13. 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 :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;

    geniefxlibLeft_Bottom.zip

    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

    geniefxlib3.zip

  14. 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).

  15. 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...

    XDock.zip

  16. 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 :P

    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.

×
×
  • Create New...