TheJester12121
24th July 2008 07:51 UTC
DetailPrint or similar from plugin c code ?
Hi,
Is it possible to do a printf or DetailPrint or something else, that does the same as DetailPrint but from the plugin code ?
My plugin does a lot of things i'd like to log in the main NSIS installer window.
Best regards,
TJ
Anders
24th July 2008 09:57 UTC
you have to add the string to the listview yourself, nsexec.c already has a function that does it
TheJester12121
24th July 2008 10:22 UTC
Hi,
Must be me, but where can i find the source of dll nsexec ?
Its not included in the default installation of NSIS ?
Can you pass an example ?
Thanks !
Afrow UK
24th July 2008 10:37 UTC
It's easy. Use the LVITEM structure and the ListView_ macros which are all defined on MSDN.
The NSIS source is a different download on the Wiki.
Stu
TheJester12121
24th July 2008 13:57 UTC
I think I understand what you were saying so I downloaded the nsExec source, copied the function LogMessage and added the code to my plugin...
The exported function in the plugin starts with :
extern "C" __declspec(dllexport) void CommitDir( HWND hwndParent, int string_size, char *variables, stack_t **stacktop )
{
EXDLL_INIT();
g_hwndList = NULL;
if (g_hwndParent)
g_hwndList = FindWindowEx(FindWindowEx(g_hwndParent,NULL,"#32770",NULL),NULL,"SysListView32",NULL);
when i do : LogMessage("DLL Scanner hgsdfgdsgdsgdsfg.", true ); i see nothing in the listview.
and if i do :
myfile.open ("c:\\commitlog.txt");
if (g_hwndParent)
myfile << "Parent ok..." << std::endl;
else
myfile << "Parent failed..." << std::endl;
if (g_hwndList)
myfile << "List ok..." << std::endl;
else
myfile << "List failed..." << std::endl;
myfile.close();
in the plugin code,
i can see that the parent is valid, but the listview is not found. Why is this ?
Dit i completely misunderstand what you meant ?
thanks !
TheJester12121
24th July 2008 15:35 UTC
Got it working now.
Thanks for all ideas!