Hasher Posted November 28, 2006 Share Posted November 28, 2006 Hi this is one of my first posts aand I am not so good with anything to do with DLL's but below is my attempt at a screen capture app. Borrowed some code off the forum and wrote some of my own. The probelm I am having is : C:\Documents and Settings\user\Desktop\scr.au3 (44) : ==> AutoIt has encountered a fatal crash as a result of: Unable to execute DLLCall.: DllCall ( "olepro32.dll" , "int" , "OleCreatePictureIndirect" , "ptr" , DllStructGetPtr($myPic) expandcollapse popup[code] dim $myPicObject ; Screenshot via Dll $hwnd = DllCall("user32.dll","hwnd","GetDesktopWindow") ; get handle to entire screen $DC = DllCall("user32.dll","ptr","GetWindowDC","hwnd",$hwnd[0]) ; get device context for picture information $lpRect = DllStructCreate("int;int;int;int") ; create DllStruct for GetWindowRect call DllCall("user32.dll","int","GetWindowRect","hwnd",$hwnd[0],"ptr",DllStructGetPtr($lpRect)) ; get coordinates from upper-left and lower-right corner $cDC = DllCall("gdi32.dll","ptr","CreateCompatibleDC","ptr",$DC[0]) ; create compatible DC $hbmp = DllCall("gdi32.dll","hwnd","CreateCompatibleBitmap","ptr",$DC[0],"int",DllStructGetData($lpRect,3),"int",DllStructGetData($lpRect,3)) ; create compatible bitmap DllCall("gdi32.dll","hwnd","SelectObject","ptr",$cDC[0],"hwnd",$hbmp[0]) ; select bitmap to device context DllCall("gdi32.dll","int","BitBlt","ptr",$cDC[0],"int",0,"int",0,"int",DllStructGetData($lpRect,3),"int",DllStructGetData($lpRect,3),"ptr",$DC[0],"int",0,"int",0,"int",0x00CC0020) ; copy picture information from the screen to device context in memory Sleep(5000) ; break for doing anything on screen DllCall("gdi32.dll","int","BitBlt","ptr",$DC[0],"int",0,"int",0,"int",DllStructGetData($lpRect,3),"int",DllStructGetData($lpRect,3),"ptr",$cDC[0],"int",0,"int",0,"int",0x00CC0020) ; restore previous saved screen DllCall("user32.dll","int","ReleaseDC","hwnd",$hwnd[0],"ptr",$cDC[0]); release device context for use by other apps DllCall("user32.dll","int","ReleaseDC","hwnd",$hwnd[0],"ptr",$DC[0]); release device context for use by other apps $myPic = DllStructCreate ( "uint;uint;uint;uint;uint") DllStructSetData($myPic,2,1) DllStructSetData($myPic,3, $hbmp) DllStructSetData($myPic,4,0) DllStructSetData($myPic,5,0) DllStructSetData($myPic,1,DllStructGetSize($myPic)) DllCall ( "olepro32.dll" , "int" , "OleCreatePictureIndirect" , "ptr" , DllStructGetPtr($myPic)) $myIID = DllStructCreate ( "uint;ushort;ushort;ubyte;ubyte;ubyte;ubyte;ubyte;ubyte;ubyte;ubyte") DllStructSetData ($myIID , 1 , 0x20400 ) DllStructSetData ( $myIID , 4 ,0xC0 ) DllStructSetData ( $myIID , 11 , 0x46 ) DllCall ( "olepro32.dll" , "int" , "OleCreatePictureIndirect" , "ptr" , DllStructGetPtr($myPic) , "ptr" , DllStructGetPtr($myIID) , "int" , 1 , "ptr" , $myPicObject ) DllCall ( "oleaut32.dll" , "uint" , "OleSavePictureFile" , "ptr" , $myPicObject , "wstr" , "MYBMPFILE.BMP" ) Any help with what I am doing wrong would be appeicaited :-) Also if anyone has a Bmp to Jpg function it would make my day!!! Paul Firefox's secret is the same as Jessica Simpson's: its effortless, glamorous style is the result of shhh extensions! Link to comment Share on other sites More sharing options...
PaulIA Posted November 28, 2006 Share Posted November 28, 2006 I don't think you're calling the API with the correct parameters. Here is the API prototype for OleCreatePictureIndirect from MSDN:STDAPI OleCreatePictureIndirect( PICTDESC* pPictDesc, //Pointer to the structure of parameters for picture REFIID riid, //Reference to the identifier of the interface BOOL fOwn, //Whether the picture is to be destroyed VOID** ppvObj //Address of output variable that receives the interface pointer requested in riid )So this won't work:DllCall ( "olepro32.dll" , "int" , "OleCreatePictureIndirect" , "ptr" , DllStructGetPtr($myPic)) Auto3Lib: A library of over 1200 functions for AutoIt Link to comment Share on other sites More sharing options...
BigDod Posted November 28, 2006 Share Posted November 28, 2006 http://www.autoitscript.com/fileman/users/Lazycat/dlls.html is a link to a screencapture app bu LazyCat. Time you enjoyed wasting is not wasted time ......T.S. Elliot Suspense is worse than disappointment................Robert Burns God help the man who won't help himself, because no-one else will...........My Grandmother Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now