|
nimishsudan wrote: Where should I check this? If this is supposed to be in my code,
In your stdafx.h file.. it is self generated according to vc version you are using
|
|
|
|
|
Well, I finally got the project to compile. I had to add the typedef struct for _WLX_NOTIFICATION_INFO and PFNMSGECALLBACK in order for it to compile without errors. But now my question is why doesn't it work? I have compiled the following code, and copied newNotif.exp and newNotif.dll to C:\Windows\System32\ and added the below registry entry to my registry. When I reboot, it doesn't do anything, not even the messagebox is displayed.
REGISTRY FILE:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\newNotif]
"Asynchronous"=dword:00000000
"Impersonate"=dword:00000000
"DllName"=hex(2):6e,00,65,00,77,00,4e,00,6f,00,74,00,69,00,66,00,2e,00,64,00,\
6c,00,6c,00,00,00
"Logon"="StartProcessAtWinLogon"
"Logoff"="StopProcessAtWinLogoff"
CPP FILE:
// newNotif.cpp : Defines the initialization routines for the DLL.
//
#include <windows.h>
#include <winwlx.h>
#include "stdafx.h"
#include "newNotif.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
typedef DWORD(* PFNMSGECALLBACK )(BOOL bVerbose, LPWSTR lpMessage);
typedef struct _WLX_NOTIFICATION_INFO { ULONG Size; ULONG Flags; PWSTR UserName; PWSTR Domain; PWSTR WindowStation; HANDLE hToken; HDESK hDesktop; PFNMSGECALLBACK pStatusCallback;
} WLX_NOTIFICATION_INFO, *PWLX_NOTIFICATION_INFO;
SafeTerminateProcess(HANDLE hProcess, UINT uExitCode);
/////////////////////////////////////////////////////////////////////////////
// CNewNotifApp
BEGIN_MESSAGE_MAP(CNewNotifApp, CWinApp)
//{{AFX_MSG_MAP(CNewNotifApp)
// 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()
/////////////////////////////////////////////////////////////////////////////
// CNewNotifApp construction
CNewNotifApp::CNewNotifApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CNewNotifApp object
CNewNotifApp theApp;
PROCESS_INFORMATION g_pi;
TCHAR g_szPath[] = TEXT("C:\\Windows\\Notepad.exe");
//Entrance function for the DLL
BOOL WINAPI LibMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
{
DisableThreadLibraryCalls (hInstance);
}
break;
}
return TRUE;
}
//Event handler for the Winlogon Logon event
VOID APIENTRY StartProcessAtWinLogon (PWLX_NOTIFICATION_INFO pInfo)
{
TCHAR szText[MAX_PATH];
STARTUPINFO si;
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpTitle = NULL;
si.lpDesktop = TEXT("WinSta0\\Default");
si.dwX = si.dwY = si.dwXSize = si.dwYSize = 0L;
si.dwFlags = 0;;
si.wShowWindow = SW_SHOW;
si.lpReserved2 = NULL;
si.cbReserved2 = 0;
DWORD dwWritten;
HANDLE hFile = CreateFile(TEXT("c:\\TSP.txt"), GENERIC_ALL, NULL, NULL, OPEN_ALWAYS, NULL, NULL);
strcpy(szText, TEXT("StartProcessAtWinLogon \r\n"));
WriteFile(hFile, szText, strlen(szText), &dwWritten, NULL);
CloseHandle(hFile);
CreateProcess(NULL, g_szPath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE,
NULL, NULL, &si, &g_pi);
MessageBox(NULL, "Winlogon Test", "Winlogon Test", MB_OK);
}
//Event handler for the Winlogon Logoff event.
VOID APIENTRY StopProcessAtWinLogoff (PWLX_NOTIFICATION_INFO pInfo)
{
//terminates the process
//****************SafeTerminateProcess(g_pi.hProcess, 0xDEADBEEF);
}
//other event handlers
VOID APIENTRY YOUR_EVENT_HANDLERS (PWLX_NOTIFICATION_INFO pInfo)
{
//code
}
// Here is the event handler for the Winlogon Logon event.
VOID WLEventLogon (PWLX_NOTIFICATION_INFO pInfo)
{
// Print the name of the handler to debug output.
// You can replace this with more useful functionality.
OutputDebugString (TEXT("NOTIFY: Entering WLEventLogon.\r\n"));
}
// Here is the event handler for the Winlogon Logoff event.
VOID WLEventLogoff (PWLX_NOTIFICATION_INFO pInfo)
{
// Print the name of the handler to debug output.
// You can replace this with more useful functionality.
OutputDebugString (TEXT("NOTIFY: Entering WLEventLogff.\r\n"));
}
HEADER FILE:
// newNotif.h : main header file for the NEWNOTIF DLL
//
#if !defined(AFX_NEWNOTIF_H__CEECF57A_5EFB_4B19_A60F_E05203D4E73C__INCLUDED_)
#define AFX_NEWNOTIF_H__CEECF57A_5EFB_4B19_A60F_E05203D4E73C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include <windows.h>
#include <winwlx.h>
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CNewNotifApp
// See newNotif.cpp for the implementation of this class
//
class CNewNotifApp : public CWinApp
{
public:
CNewNotifApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNewNotifApp)
//}}AFX_VIRTUAL
//{{AFX_MSG(CNewNotifApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NEWNOTIF_H__CEECF57A_5EFB_4B19_A60F_E05203D4E73C__INCLUDED_)
|
|
|
|
|
Hi guys~ I need to build a 3D map system that will accept 2 inputs from users (the current location and the destination user wants to go), by clicking, then the system will generate a path from the current location to the destination.
At first I planed to use OpenGL to do so....but I faced one problem. The exporter that I used can only extract the vertices of the model I built in 3DsMax, not included the texture mapping! I already done nice mapping in 3DsMax and I think it takes time to do mapping in OpenGL.(total up 15 buildings need to be mapped)
Therefore, I switch to VRML (because the 3DsMax can export the model to VRML file with texture mapped)but I found VRML is dead and not powerful at all. Then I switch to Java3D but I heard someone says this programming is dying and will run slow! The most powerful tools for 3D Graphics Application still belongs to--->OpenGL!! And now I stuck here~Time passed away quickly and I still not yet done my system!
I need some help from you guys and suggestions, advices from you all~Please...please help~~~~sob sob////
I more familiar with OpenGL if compared with Java3D and VRML(both I learned 3 days ago only,very unfamiliar~)
I wish to extract the model(with texture mapped) to OpenGl then I can quickly concerntrate on my system(my due date for this project is coming soon)
Thanks a lot!
|
|
|
|
|
I think perhaps http://www.wotsit.org is helpful for you
|
|
|
|
|
Thanks Thanks Thanks....
I believe that site will help me out a lot.
|
|
|
|
|
check out http://www.openscenegraph.org/[^]
All the power of OpenGL, all the ease of higher level operation.
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
Oh...Thanks guys~I will check out on the site provided...really thanks!!!
|
|
|
|
|
Hi all,
i have write an application that create a movie from series of images. but i have some problem when writing the sample to the writer for the second times. It's return with error code NS_E_INVALID_DATA (0xc00d002f).
my complete code is like below :
// Aduuuuuuh.cpp : main project file.
#include "stdafx.h"
//#include <memory.h>;
#include "resource.h"
using namespace System;
using namespace System::Drawing;
int main(array<System::String ^> ^args)
{
IWMProfileManager *manager = NULL;
IWMProfile *profile = NULL;
IWMCodecInfo *codecInfo = NULL;
IWMMediaProps *mediaProps = NULL;
IWMStreamConfig *streamConfig = NULL;
WM_MEDIA_TYPE *mediaType = NULL;
WMVIDEOINFOHEADER *infoHeader = NULL;
IWMPropertyVault *propertyVault = NULL;
IWMWriter *writer = NULL;
IWMInputMediaProps *inputProps = NULL;
HRESULT hr = S_OK;
LONG vHeight = 240;
LONG vWidth = 320;
CoInitialize(NULL);
hr = WMCreateProfileManager(&manager); THROW_EXCEPTION(hr);
hr = manager->QueryInterface(IID_IWMCodecInfo, (void**)&codecInfo); THROW_EXCEPTION(hr);
hr = codecInfo->GetCodecFormat(WMMEDIATYPE_Video, 6, 0, &streamConfig); THROW_EXCEPTION(hr);
hr = streamConfig->QueryInterface(IID_IWMMediaProps, (void**)&mediaProps); THROW_EXCEPTION(hr);
DWORD count = 0;
hr = mediaProps->GetMediaType(NULL, &count); THROW_EXCEPTION(hr);
mediaType = (WM_MEDIA_TYPE*) new BYTE[count];
hr = mediaProps->GetMediaType(mediaType, &count); THROW_EXCEPTION(hr);
infoHeader = (WMVIDEOINFOHEADER*)mediaType->pbFormat;
infoHeader->dwBitRate = 100000;
infoHeader->AvgTimePerFrame = ((LONGLONG)10000000 / (LONGLONG) 30);
infoHeader->bmiHeader.biWidth = vWidth;
infoHeader->bmiHeader.biHeight = vHeight;
infoHeader->bmiHeader.biSizeImage = vWidth * vHeight * 3;
infoHeader->rcSource.right = vWidth;
infoHeader->rcSource.bottom = vHeight;
infoHeader->rcTarget.right = vWidth;
infoHeader->rcTarget.bottom = vHeight;
mediaProps->SetMediaType(mediaType);
//delete[] mediaType;
//hr = streamConfig->QueryInterface<IWMPropertyVault>(&propertyVault);
//BOOL isVBR = FALSE;
//hr = propertyVault->SetProperty(g_wszVBREnabled, WMT_TYPE_BOOL, (BYTE*)&isVBR, sizeof(isVBR)); THROW_EXCEPTION(hr);
hr = manager->CreateEmptyProfile(WMT_VER_9_0, &profile); THROW_EXCEPTION(hr);
hr = streamConfig->SetStreamNumber(1); THROW_EXCEPTION(hr);
hr = streamConfig->SetBitrate(100000);THROW_EXCEPTION(hr);
hr = streamConfig->SetBufferWindow(3000);THROW_EXCEPTION(hr);
hr = profile->AddStream(streamConfig); THROW_EXCEPTION(hr);
CoInitialize(NULL);
hr = WMCreateWriter(NULL, &writer); THROW_EXCEPTION(hr);
hr = writer->SetProfile(profile); THROW_EXCEPTION(hr);
hr = writer->GetInputProps(0, &inputProps);THROW_EXCEPTION(hr);
count = 0;
hr = inputProps->GetMediaType(NULL, &count);THROW_EXCEPTION(hr);
mediaType = (WM_MEDIA_TYPE*) new BYTE[count];
hr = inputProps->GetMediaType(mediaType, &count); THROW_EXCEPTION(hr);
mediaType->subtype = WMMEDIASUBTYPE_VIDEOIMAGE;
hr = inputProps->SetMediaType(mediaType);THROW_EXCEPTION(hr);
infoHeader = (WMVIDEOINFOHEADER*) mediaType->pbFormat;
hr = inputProps->SetMediaType(mediaType);THROW_EXCEPTION(hr);
//delete[] mediaType;
//------------------- writing
hr = writer->SetOutputFilename(L"C:\\Pliiiis.wmv");THROW_EXCEPTION(hr);
hr = writer->BeginWriting(); THROW_EXCEPTION(hr);
#pragma region convert bitmap to byte*
Bitmap ^gambar = gcnew Bitmap("C:\\source.bmp");
array<unsigned char, 1>^ memStr = gcnew array<unsigned char, 1>(vWidth * vHeight * 3 + 54);
System::IO::MemoryStream ^ms = gcnew System::IO::MemoryStream(memStr);
gambar->Save(ms, Imaging::ImageFormat::Bmp);
BYTE* bmp = new BYTE[vWidth * vHeight * 3];
for(int i = 54; i < ((vWidth * vHeight * 3) + 54); i ++)
{
*(bmp + i - 54) = memStr[i];
}
#pragma endregion
#pragma region Sample header 1
WMT_VIDEOIMAGE_SAMPLE2 *sample = (WMT_VIDEOIMAGE_SAMPLE2*) new BYTE[sizeof(WMT_VIDEOIMAGE_SAMPLE2)];
sample->dwMagic = WMT_VIDEOIMAGE_MAGIC_NUMBER_2;
sample->dwStructSize = sizeof(WMT_VIDEOIMAGE_SAMPLE2);
sample->dwViewportWidth = vWidth;
sample->dwViewportHeight = vHeight;
sample->dwCurrImageWidth = vWidth;
sample->dwCurrImageHeight = vHeight;
sample->fCurrRegionX0 = 0;
sample->fCurrRegionY0 = 0;
sample->fCurrRegionWidth = (FLOAT)vWidth;
sample->fCurrRegionHeight = (FLOAT)vHeight;
sample->dwPrevImageWidth = vWidth;
sample->dwPrevImageHeight = vHeight;
sample->fPrevRegionX0 = 0;
sample->fPrevRegionY0 = 0;
sample->fPrevRegionWidth = (FLOAT)vWidth;
sample->fPrevRegionHeight = (FLOAT)vHeight;
sample->dwEffectType = 0;
sample->dwNumEffectParas = 0;
sample->bKeepPrevImage = FALSE;
sample->dwControlFlags = WMT_VIDEOIMAGE_SAMPLE_INPUT_FRAME;
//TODO : create blending transision here
sample->fCurrBlendCoef = 1;
sample->fPrevBlendCoef = 0;
#pragma endregion
INSSBuffer *buffer = NULL;
QWORD timeCounter = 0;
QWORD vidTime = 0;
DWORD len = vHeight * vWidth * 3;
for(int i = 0; i < 60; i ++)
{
#pragma region first photo
if(i == 0)
{
BYTE *loc = NULL;
DWORD sampleSize = sizeof(WMT_VIDEOIMAGE_SAMPLE2);
DWORD size = len + sampleSize;
hr = writer->AllocateSample(size, &buffer);THROW_EXCEPTION(hr);
DWORD bufferLength = 0;
buffer->GetBufferAndLength(&loc, &bufferLength);
errno_t err = memcpy_s(loc, sampleSize, sample, sampleSize);THROW_EXCEPTION(hr);
err = memcpy_s((loc + sampleSize), len, bmp, len);
hr = buffer->SetLength(size);
THROW_EXCEPTION(hr);
hr = writer->WriteSample(0, vidTime, 0, buffer);THROW_EXCEPTION(hr);
//delete loc;
//loc = NULL;
buffer->Release();
buffer = NULL;
}
#pragma endregion
#pragma region the next
else
{
sample->dwControlFlags = WMT_VIDEOIMAGE_SAMPLE_OUTPUT_FRAME |
WMT_VIDEOIMAGE_SAMPLE_USES_CURRENT_INPUT_FRAME;
BYTE *loc = NULL;
DWORD size = sizeof(WMT_VIDEOIMAGE_SAMPLE2);
hr = writer->AllocateSample(size, &buffer);THROW_EXCEPTION(hr);
buffer->GetBuffer(&loc);
memcpy_s(loc, size, sample, size);
hr = buffer->SetLength(size);THROW_EXCEPTION(hr);
//------------------------Error appears here with code NS_E_INVALID_DATA
hr = writer->WriteSample(0, vidTime, 0, buffer);THROW_EXCEPTION(hr);
buffer->Release();
buffer = NULL;
}
#pragma endregion
vidTime = (++timeCounter * 1000)/30;
}
hr = writer->EndWriting();THROW_EXCEPTION(hr);
return 0;
}
|
|
|
|
|
Sir,
I amd Suresh Kumar want to know the differences between the VC++ and .Net. Please send me the differences I request. I referred many books but i didn't get any information regarding this and also searched on internet in many sites
including Microsoft.
Regards,
S.Suresh Kumar
Suresh Kumar
|
|
|
|
|
http://www.codepedia.com/2/FAQ-VCDOTNET-VC6-VCDOTNET-Differences
|
|
|
|
|
Sriram Suresh wrote: I referred many books but i didn't get any information regarding this and also searched on internet in many sitesincluding Microsoft.
WHat type information are you looking for?
|
|
|
|
|
f:\installation\vc98\include\xmemory(37) : warning C4100: '_P' : unreferenced formal parameter
f:\installation\vc98\include\xmemory(68) : see reference to function template instantiation 'void __cdecl std::_Destroy(unsigned int *)' being compiled
Error.cpp
I also got this error. It seems that it caused by the include header. How can i solve this?
Thanks again.
|
|
|
|
|
That is only a warning so you don't have to fix anything. The warning says that the function std::_Destroy(unsigned int *) did not use the one parameter.
John
|
|
|
|
|
unexpected end of file while looking for precompiled header directive
i have this error when i compile my project on debug mode but when i compile it in release mode it doesn't have this problem. Please help me. i don't know how to debug this and how come the error occurs when I compile it in debug mode and not when I compile it in release mode. What probably is the cause? Does it mean that i have a missing file? I'm new to Visual C++ Programming.
|
|
|
|
|
Put this at the top of every cpp file:
#include "stdafx.h"
John
-- modified at 21:25 Friday 10th March, 2006
|
|
|
|
|
i did what you have suggested. It resulted to another error. here it is:
fatal error C1853: 'Debug/CMMITool.pch' is not a precompiled header file created with this compiler
the file which i included the stdafx.h header file is a C source file. this must have caused the other error.
|
|
|
|
|
Delete Debug/CMMITool.pch and try again. A pch file may not be used on two different versions of VC++.
John
|
|
|
|
|
delete Debug directory, and delete .clw, .opt, .NCB files.
then compile again.
libo
|
|
|
|
|
|
I am writing BHO for now, which dynamically changes the document.
I faced that thing, that if I do next (after the 'documentcomplete' event in browser)
//Code:
CComQIPtr<IHTMLElement> piSpanElement;
hr = pHtmlDocument->createElement(L"span", &piSpanElement);
BSTR innerHtml = L" <u>This is string with leading space"</u>";
//leading space is happily ignored, when I'm inserting that text:
hr = piSpanElement->put_innerHTML(innerHtml);
//Ok-ok, I beleive, it is with the good intentions
//of MSHTML, I will try to insert some text...
//I even do not put a whitespace there...
//Ok, I will try to insert some text...
//(In MSDN it is said, that InsertAdjancedText inserts plain text.
hr = piSpanElement->insertAdjacentText(L"beforeEnd",L"Some text");
//OK, text is in element, but... I needed before content, ok, mistake - I try to correct:
hr = piSpanElement->insertAdjacentText(L"afterBegin",L"!I WANNA SEE THIS TEXT IN ELEMENT before content!");
//It does return S_OK... I do not see that text, WTH!?
//I insert this element simply querying interface and
//substituting the DOM node. After that html element tortures.
May be I'm "stupido", but I cannot convert IHTMLDomNode element to the IHTMLElement. If there is any method - please tell..
then - one more...
we have "this node", reference node, and node to substitute
Substituting node is IHTMLDomNode pointer, former IHTMLDOMTextNode with text " " or any other - the result was same.
CComQIPtr<IHTMLDomNode> resultNode;
VARIANT refNode;
refNode.vt = VT_DISPATCH;
refNode.pdispVal = rNode; //reference node pointer
hr = thisNode->get_parentNode(&pNode); //parent node pointer
//OK, pNode is not null.
hr = pNode->InsertBefore(substitutingNode,refNode,&newNode);
//Why hr is EINVALIDARG???
or just simply - is there any way to insert that eaten leaded space.
Or what I do incorrectly?
|
|
|
|
|
1) You should NOT use unicode strings in place of BSTR's. Use SysAllocString() and SysFreeString(). Or better yet, use ATL::CComBSTR.
2) Use QueryInterface() to get IHTMLElement from IHTMLDOMNode. Or better yet use ATL::CComQIPtr<IHTMLElement> spIHTMLElement(piHTMLDOMNode). This calls QueryInterface() automatically.
3) You should NOT use raw VARIANT. Use VariantInit(), VariantChangeType(), and VariantClear(). Better yet, use ATL::CComVariant.
|
|
|
|
|
Problems:
QueryInterface() returns null and E_NOINTERFACE (or smth like).
So it seems to me, that the circle closed...
If somebody know, howto do that, please answer
|
|
|
|
|
Hello!
y Build an application using visual studio, but i don´t know what extra files do i need for execute de applicatión in a different machine
Sergio
|
|
|
|
|
Which version of VC++ are you using?
For most applications, they will have dependency on the C Run-time dlls.
In VC++ 2003 and earlier, those CRT dlls are dropped to system32 folder and they just need to be on the path. You can figure out the names of the dlls by using depends.exe.
In VC++ 2005, the CRT dlls are now distributed through Msms that needs to be merged into an Msi to get installed on the user's machine. You can search for VCRedist.exe on the microsoft website. Again - depends.exe should help you figure out those dlls.
gmileka
|
|
|
|
|
hi guys,
im using ReadProcessMemory to read out 4 bytes of a process. The value is a DWORD. Yesterday a friend said to that I should use a Pointer opperation to read out the memory. I read a bit about Pointer and Memory allocation but i didn´t get it working.
I tried this:
DWORD dwAddress = 0x01234567;
DWORD *dwValue = *(DWORD*)dwAddress; // got the address of dwAddress
DWORD dwValue = *(&dwAddress); // got the address ( 0x01234567 )
How can i read out the value ?
|
|
|
|
|