30 mensajes Página 1 de 2
Buenas amigos de AMSSpecialist.com hoy os traigo la enésima modificación del Action Plguin Clipboard, aun que la he titulado 2.0.3.0 es mas bien una 2.0.2.1 por que no he modificado el codigo mucho simplemente he reeditado el proyecto desde Cero usando el ejemplo que lleva el SDK 2.0.0.1 y añadiendo la nueva función y algunos datos que cuando trasteamos pabloko no cambio, esta versión es una versión no Oficial de modo que si queréis soporte tenéis que pedirlo aquí y no al foro de IR.

Código
Código Modificado en ClipboardFunctions.cpp:
#include "stdafx.h"
#include "ClipboardFunctions.h"
#include "IRPluginHelperFunctions.h"

static int irclipboard_copytext (lua_State *L)
{
        int nLastError = 0;
        IRLUA_PLUGIN_ResetLastError(L);

        IRLUA_PLUGIN_CheckNumArgs(L,1);
       
        CString strText;
        strText = IRLUA_PLUGIN_CheckString(L,1);

        if(OpenClipboard(NULL))
        {
                /*HGLOBAL clipbuffer;
                char * buffer;
                EmptyClipboard();
                clipbuffer = GlobalAlloc(GMEM_DDESHARE, strText.GetLength()+1);
                buffer = (char*)GlobalLock(clipbuffer);
                #if _MSC_VER < 1400
                strcpy(buffer, LPCSTR(strText));
                #else
                strcpy_s(buffer, sizeof(buffer), LPCSTR(strText));
                #endif
                GlobalUnlock(clipbuffer);
                SetClipboardData(CF_TEXT,clipbuffer);
                CloseClipboard();
                */

                HGLOBAL clipbuffer;
                char * buffer;
                EmptyClipboard();
                const int nBuffLength = strText.GetLength()+1;
                clipbuffer = GlobalAlloc(GMEM_DDESHARE, nBuffLength);
                buffer = (char*)GlobalLock(clipbuffer);
                #if _MSC_VER < 1400
                strcpy(buffer, LPCSTR(strText));
                #else
                strcpy_s(buffer, nBuffLength, LPCSTR(strText));
                #endif
                GlobalUnlock(clipbuffer);
                SetClipboardData(CF_TEXT,clipbuffer);
                CloseClipboard();
               
        } else
        {
                nLastError = 12010;
        }

        IRLUA_PLUGIN_SetLastError(L,nLastError);
        return 0;
}

static int irclipboard_gettext (lua_State *L)
{
        int nLastError = 0;
        IRLUA_PLUGIN_ResetLastError(L);

        char * buffer = NULL;
        //open the clipboard
        CString fromClipboard;

        if(!IsClipboardFormatAvailable(CF_TEXT))
        {
                fromClipboard = "";
        } else
        {
                if ( OpenClipboard(NULL) )
                {
                        HANDLE hData = GetClipboardData( CF_TEXT );
                        char * buffer = (char*)GlobalLock( hData );
                        fromClipboard = buffer;
                        GlobalUnlock( hData );
                        CloseClipboard();
                } else
                {
                        fromClipboard = "";
                        nLastError = 12010;
                }
        }

        IRLUA_PLUGIN_SetLastError(L,nLastError);
        lua_pushstring(L,fromClipboard.GetBuffer(0));
        fromClipboard.ReleaseBuffer();

        return 1;
}

static int irclipboard_istextavailable (lua_State *L)
{
        int nLastError = 0;
        IRLUA_PLUGIN_ResetLastError(L);
        BOOL bReturn = FALSE;

        if(IsClipboardFormatAvailable(CF_TEXT))
        {
                bReturn = TRUE;
        }

        IRLUA_PLUGIN_SetLastError(L,nLastError);
        lua_pushboolean(L,bReturn);
        return 1;
}

static int irclipboard_copyfile (lua_State *L)
{
        int nLastError = 0;
        IRLUA_PLUGIN_ResetLastError(L);

        IRLUA_PLUGIN_CheckNumArgs(L,1);
       
        CString path;
        BOOL bCopy;

        path = IRLUA_PLUGIN_CheckString(L,1); //obtenemos el string
        bCopy = IRLUA_PLUGIN_CheckBoolean(L,2); //obtenemos el booleano de copia o corte


        //path.Replace("|", ""

//--------------------------------------------CString path, BOOL nCopy
        char tmp[256];   //[email protected]: 256 caracteres no es muy poco?
    ZeroMemory(tmp,256);  
    for(int i = 0;i<path.GetLength();i++)  //Inyectamos uno a uno cada caracter de nuestro string en una cadena de memoria char, guardada en memoria volatil
    {  
        if (path.GetAt(i)!=0x7c) tmp[i] = path.GetAt(i); //como con lua no hay forma de insertar un simbolo 0x00 obtenemos un caracter digamos raro | (0x7c) si lo encuentra en esta posicion de memoria no escribimos nada, lo cual dejara la cadena como 0x00  
    }  
//--------------------------------------------char *lpBuffer, UINT uBufLen, BOOL bCopy

        //todo esto inicia variables que vamos a usar
        char *lpBuffer;
        UINT uBufLen;
       
        UINT uDropEffect;  
    DROPFILES dropFiles;  
    UINT uGblLen,uDropFilesLen;  
    HGLOBAL hGblFiles,hGblEffect;  
    char *szData,*szFileList;  
   
    DWORD *dwDropEffect;  



        //CutOrCopyFiles(tmp,path.GetLength(),nCopy);

       
        lpBuffer=tmp;
        uBufLen=path.GetLength();
        //bCopy = true;

        //configuramos el drop effect, osea, copia o corte
    uDropEffect=RegisterClipboardFormat("Preferred DropEffect");  
    hGblEffect=GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE,sizeof(DWORD));  
    dwDropEffect=(DWORD*)GlobalLock(hGblEffect);  
    if(bCopy)  
        *dwDropEffect=DROPEFFECT_COPY;  
    else    
        *dwDropEffect=DROPEFFECT_MOVE;  
    GlobalUnlock(hGblEffect);  
   
    uDropFilesLen=sizeof(DROPFILES);  
    dropFiles.pFiles =uDropFilesLen;  
    dropFiles.pt.x=0;  
    dropFiles.pt.y=0;  
    dropFiles.fNC =FALSE;  
    dropFiles.fWide =TRUE;  
   
        //escribimos la memoria con mierda aleatoria que funciona gracias a los hijos de puta de ms

    uGblLen=uDropFilesLen+uBufLen*2+8;  
    hGblFiles= GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, uGblLen);  
    szData=(char*)GlobalLock(hGblFiles);  
    memcpy(szData,(LPVOID)(&dropFiles),uDropFilesLen);  
    szFileList=szData+uDropFilesLen;  
   
        //hora de convertir nuestra mierda de bytes a una cadena wide, despues de 2 conversiones ya... otra maravilla gracias a los colegas de ms

    MultiByteToWideChar(CP_ACP,MB_COMPOSITE,  
            lpBuffer,uBufLen,(WCHAR *)szFileList,uBufLen);  
       
    GlobalUnlock(hGblFiles);  
   

        //esto no necesita explicacion¿?
    if( OpenClipboard(NULL) )  
    {  
        EmptyClipboard();   //jodemos todo lo que haya
        SetClipboardData( CF_HDROP, hGblFiles );   //usamos CF_HDROP que nos va a permitir copiar y pegar mierdas
        SetClipboardData(uDropEffect,hGblEffect);   //agregamos el drop effect
        CloseClipboard();   //mandamos a tomar por culo la memoria usada
    }  
        return 0;
}

const luaL_reg tab_funcs[] = {
                {"CopyText", irclipboard_copytext},
                {"GetText", irclipboard_gettext},
                {"IsTextAvailable", irclipboard_istextavailable},
                {"CopyFile", irclipboard_copyfile},
                {NULL, NULL}
        };


int lua_cblibopen (lua_State *L) {
       
       
        luaL_openlib(L, "Clipboard", tab_funcs, 0);

        IRLUA_PLUGIN_SetGlobalErrorMessage(L,12010,"Failed to open clipboard.");

        return 0;
}
Parsed in 0.016 seconds, using GeSHi 1.0.8.9


Código Modificado en IRClipboard.cpp:
// IRClipboard.cpp : Defines the initialization routines for the DLL.
//

#include "stdafx.h"
#include "IRClipboard.h"
#include "ClipboardFunctions.h"
#include "IRPluginHelperFunctions.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//
//      Note!
//
//              If this DLL is dynamically linked against the MFC
//              DLLs, any functions exported from this DLL which
//              call into MFC must have the AFX_MANAGE_STATE macro
//              added at the very beginning of the function.
//
//              For example:
//
//              extern "C" BOOL PASCAL EXPORT ExportedFunction()
//              {
//                      AFX_MANAGE_STATE(AfxGetStaticModuleState());
//                      // normal function body here
//              }
//
//              It is very important that this macro appear in each
//              function, prior to any calls into MFC.  This means that
//              it must appear as the first statement within the
//              function, even before any object variable declarations
//              as their constructors may generate calls into the MFC
//              DLL.
//
//              Please see MFC Technical Notes 33 and 58 for additional
//              details.
//

/////////////////////////////////////////////////////////////////////////////
// CIRClipboardApp

BEGIN_MESSAGE_MAP(CIRClipboardApp, CWinApp)
        //{{AFX_MSG_MAP(CIRClipboardApp)
                // NOTE - the ClassWizard will add and remove mapping macros here.
                //    DO NOT EDIT what you see in these blocks of generated code!
        //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIRClipboardApp construction

CIRClipboardApp::CIRClipboardApp()
{
        // TODO: add construction code here,
        // Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CIRClipboardApp object

CIRClipboardApp theApp;

#define SIZE_XML_STRING 10000

char szObjectName[] = "Clipboard";
char szXML[SIZE_XML_STRING];

char szInformation[] = "Clipboard Actions Plugin\r\nCreated by Indigo Rose Corporation\r\nPabloko & Ceone modified for AMSSpecialist.com\r\n"
                                           "http://www.amsspecialist.com";

int irPlg_GetPluginName(char* szBuffer, int* pnBufferSize)
{
        // The proper name of the object as it will appear on the Plugins menu
        int nLength = lstrlen(szObjectName);
        if(*pnBufferSize < nLength)
        {
                *pnBufferSize = nLength;
                return -1;
        } else
        {
                memset(szBuffer,0,*pnBufferSize);
                lstrcpy(szBuffer,szObjectName);
                return nLength;
        }
}

int irPlg_GetPluginVersion(char* szBuffer, int* pnBufferSize)
{
        // Always returns this, do not remove or modify...
        int nLength = lstrlen("2.0.3.0");
        if(*pnBufferSize < nLength)
        {
                *pnBufferSize = nLength;
                return -1;
        } else
        {
                memset(szBuffer,0,*pnBufferSize);
                lstrcpy(szBuffer,"2.0.3.0");
                return nLength;
        }
}

int irPlg_GetAuthorInfo(char* szBuffer, int* pnBufferSize)
{
        // Always returns this, do not remove or modify...
        int nLength = lstrlen(szInformation);
        if(*pnBufferSize < nLength)
        {
                *pnBufferSize = nLength;
                return -1;
        } else
        {
                memset(szBuffer,0,*pnBufferSize);
                lstrcpy(szBuffer,szInformation);
                return nLength;
        }
}

int irPlg_GetPluginActionXML(char* szBuffer, int* pnBufferSize)
{
        memset(szXML,0,10000);
        if(!IR_PLUGIN_GetTextFromResourceFile("TEXTFILE",IDR_ACTIONSXML,szXML,SIZE_XML_STRING))
        {
                lstrcpy(szXML,"");
        }

        int nLength = lstrlen(szXML);
        if(*pnBufferSize < nLength)
        {
                *pnBufferSize = nLength;
                return -1;
        } else
        {
                memset(szBuffer,0,*pnBufferSize);
                lstrcpy(szBuffer,szXML);
                return nLength;
        }
}

bool irPlg_ShowHelpForAction(char* lpszActionName, char* lpszPluginPath, HWND hParentWnd)
{
        CString strHelpFile;

        strHelpFile.Format("%s\\Clipboard_Help.htm",lpszPluginPath);

        if(GetFileAttributes(strHelpFile) == -1)
        {
                return FALSE;
        } else
        {
                ShellExecute(hParentWnd,"open",strHelpFile,NULL,NULL,SW_NORMAL);
        }

        return TRUE;
}

bool irPlg_ShowHelpForPlugin(char* lpszPluginPath, HWND hParentWnd)
{
        CString strHelpFile;

        strHelpFile.Format("%s\\Clipboard_Help.htm",lpszPluginPath);

        if(GetFileAttributes(strHelpFile) == -1)
        {
                return FALSE;
        } else
        {
                ShellExecute(hParentWnd,"open",strHelpFile,NULL,NULL,SW_NORMAL);
        }

        return TRUE;
}
/*
bool irPlg_IsValidLicense(char* lpszLicenseInfo)
{
        return TRUE;
}
*/

bool irPlg_ValidateLicense(char* lpszLicenseInfo)
{
        return TRUE;
}

int irPlg_GetLuaVersion(char* szBuffer, int* pnBufferSize)
{
        int nLength = lstrlen(LUA_VERSION);
        if(*pnBufferSize < nLength)
        {
                *pnBufferSize = nLength;
                return -1;
        } else
        {
                memset(szBuffer,0,*pnBufferSize);
                lstrcpy(szBuffer,LUA_VERSION);
                return nLength;
        }
}

int irPlg_Action_RegisterActions(lua_State* L)
{
        return lua_cblibopen(L);
}
Parsed in 0.014 seconds, using GeSHi 1.0.8.9


Y también he modificado un archivo que se llama IRClipboard.rc2 que en realidad los valores de dicho archivo se guardan en IRClipboard.rc:
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Inglés (Estados Unidos) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE
BEGIN
    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    "#define _AFX_NO_OLE_RESOURCES\r\n"
    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
    "\r\n"
    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
    "#ifdef _WIN32\r\n"
    "LANGUAGE 9, 1\r\n"
    "#pragma code_page(1252)\r\n"
    "#endif //_WIN32\r\n"
    "#include ""res\\IRClipboard.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
    "#include ""afxres.rc""         // Standard components\r\n"
    "#endif\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 2,0,3,0
 PRODUCTVERSION 2,0,3,0
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "Comments", "http://www.amsspecialist.com"
            VALUE "CompanyName", "AMSSpecialist Corporation"
            VALUE "FileDescription", "Clipboard Actions Plugin"
            VALUE "FileVersion", "2.0.3.0"
            VALUE "InternalName", "ir_Clipboard_Plugin"
            VALUE "LegalCopyright", "Copyleft"
            VALUE "OriginalFilename", "Clipboard.lmd"
            VALUE "ProductName", "Clipboard Actions Plugin"
            VALUE "ProductVersion", "2.0.3.0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

#endif    // Inglés (Estados Unidos) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\IRClipboard.rc2"  // non-Microsoft Visual C++ edited resources
#include "afxres.rc"         // Standard components
#endif

/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED
Parsed in 0.011 seconds, using GeSHi 1.0.8.9


Imágenes:
Imagen
Imagen

Descarga:
Contenido Oculto: ON
	<br />Usted necesita responder en este tema para ver el contenido oculto.


OR on Mediafire by abood1987 3/1/2014 :

Mediafire :
Contenido Oculto: ON
	<br />Usted necesita responder en este tema para ver el contenido oculto.


Tema Anterior:
Clipboard modificado: Soporte para copia/corte de archivos

Cualquier duda sobre el uso de este plugin o su nueva función este es el sitio....
Este plugin me parece esencial , gracias compañeros
gracias
thanks
Imagen
Thank you
Imagen

Thank you

Gracias

Gracias

That is new?
USAz english soz allz

Patch 1.0.0.3 Aero

thanks

Please Upload in mediafire :cabreado: :cabreado: :normas: :normas:

Revisa amstools por si se encuentra.

the link Has been updated 3/1/2014 On Mediafire :friends:
Imagen

:pc: :pc: :pc:

thanks

jajaj no sabia si esto lo habia hecho yo hasta que he leido los comentarios del codigo ajaja se nota como me voy cabreando mientras lo escribo. ijij
ImagenImagenImagenImagen

provaremos , gracias

jjjjjjjj

thanks

:friends: graçias
30 mensajes Página 1 de 2

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados