|
Use the LIKE operator.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Anyone know how to hook into the add/remove programs applet and determine if it shows an application is installed. If it is...uninstall it??
Thanks!!
ed
The absence of evidence is not evidence of absence.
|
|
|
|
|
Enumerate HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall , and for every sub-key where the SystemComponent value is missing or zero, those are the installed programs. The UninstallString value gives the command to run to uninstall the program.
|
|
|
|
|
That gets it! Thanks!
ed
The absence of evidence is not evidence of absence.
|
|
|
|
|
Ed K wrote:
Anyone know how to hook into the add/remove programs applet...
I don't know how to "hook" into it, but to run the applet, type:
control appwiz.cpl
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
How do I tell it to open up a dialog window when a buttom is clicked on?
and how do I tell it to close a dialog window when a button is clicked?
how do I tell it to exit the program when a button is clicked?
|
|
|
|
|
To display an instance of a new modal dialog (eg: CNewDialog ) when a button is clicked, create the dialog on the stack and call its DoModal() method.
CNewDialog dlgNew (this);
int nStatus = dlgNew.DoModal();
...
To close a dialog from within itself, call the base class method OnOK() or OnCancel() , depending on whether you want to indicate that the user ended the dialog by pressing OK or Cancel.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I am talking about a pre-created dialog window. I'm also very new to C++.
|
|
|
|
|
to close the the dialog box on button click
add a Messagwe handller
ON_BN_CLICK(IDC_BUTON1,OnBut);
and
in function
void YouClass::OnBut()
{
//close the dialog box
this->EndDialog(0);
}
-----------------------------
"I Think It will Work"
Formerly Known As "Alok The Programmer" at CP
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
for dialog open use domadal
for close dialog send the message Wm_close
for exit program called exit
|
|
|
|
|
I know nothing about C++ so you people need to explain what you are talking about
|
|
|
|
|
you have to ask clearly what exactly you wanted to do.so that we can help you in that direction.
|
|
|
|
|
I want it to open up a pre-made dialog window.
|
|
|
|
|
Hello,
I am having problems trying to terminate a process that my application starts.. I have read through MSDN and it states that you can use TerminateProcess or EndProcess (Endprocess is prefered).. But you need to ensure that you have permission to terminate a process.. Here is how I am creating my process.. Can anyone give me any pointers on how I can kill it?
PROCESS_INFORMATION piProcInfo;
BOOL CSyncThread::CreateChildProcess(CString params)
{
STARTUPINFO siStartInfo;
BOOL bFuncRetn = FALSE;
ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION));
ZeroMemory( &siStartInfo, sizeof(STARTUPINFO));
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.hStdError = hChildStdoutWr;
siStartInfo.hStdOutput = hChildStdoutWr;
siStartInfo.hStdInput = hChildStdinRd;
siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
siStartInfo.wShowWindow = SW_SHOW;
bFuncRetn = CreateProcess(NULL,
(LPTSTR)(LPCSTR)params,
NULL,
NULL,
TRUE,
0,
NULL,
NULL,
&siStartInfo,
&piProcInfo);
if (bFuncRetn == 0)
return FALSE;
else
{
CloseHandle(hChildStdinWrDup);
CloseHandle(hChildStdoutWr);
CloseHandle(hChildStdinRd);
return TRUE;
}
}
Thanks,
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
TerminateProcess( piProcInfo.hProcess, 0 );
Note: the function they reccamend using is ExitProcess() not EndProcess()
i have never used ExitProcess() to terminate a process before, so i cant give you an example, and i would think that it should take a param for the process handle but it doesnt, so it looks to me like, ExitProcess() only ends the process that called it,
|
|
|
|
|
»Archer282« wrote:
TerminateProcess( piProcInfo.hProcess, 0 );
Thats exactly how I have been trying to do it but it doesn't work. I even check all return values and everything says were good, yet the process is still running. I even tried
::PostThreadMessage(piProcInfo.dwThreadId, WM_CLOSE, 0, 0);
if(WaitForSingleObject(piProcInfo.hProcess, 5000) != WAIT_OBJECT_0)
{
HANDLE hProcess = NULL;
hProcess = OpenProcess(SYNCHRONIZE | PROCESS_TERMINATE, FALSE, piProcInfo.dwProcessId);
if(hProcess != NULL)
TerminateThread(hProcess, 0);
TRACE("Had to hard terminate\n");
}
Any ideas?
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
hi
I wrote a window service in which i am using the SOCKET API who listens to the clinet. This service runs fine on win2000 but if i run this on win2003 Server, it stop with some access violation error c0000005. I don't know whats is the problem. If i run my code without service means i make the console application and run this it does not show any error on win2003. I have this code like:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if(FillParams())
_chdir(DIR_PATH);
else
return 0;
SERVICE_TABLE_ENTRY ServiceTable[2];
ServiceTable[0].lpServiceName = "TibcoTCPServer";
ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
ServiceTable[1].lpServiceName = NULL;
ServiceTable[1].lpServiceProc = NULL;
// Start the control dispatcher thread for our service
StartServiceCtrlDispatcher(ServiceTable);
return nRetCode;
}
void ServiceMain(int argc, char** argv)
{
int error;
ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
// SERVICE_WIN32_SHARE_PROCESS;// SERVICE_WIN32;
ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwServiceSpecificExitCode = 0;
ServiceStatus.dwCheckPoint = 0;
ServiceStatus.dwWaitHint = 0;
hStatus = RegisterServiceCtrlHandler(
"TibcoTCPServer",
(LPHANDLER_FUNCTION)ControlHandler);
if (hStatus == (SERVICE_STATUS_HANDLE)0)
{
// Registering Control Handler failed
WriteToLog("Registring Control Handler failed");
return;
}
// Initialize Service
error = InitService();
if (error)
{
// Initialization failed
ServiceStatus.dwCurrentState =
SERVICE_STOPPED;
ServiceStatus.dwWin32ExitCode = -1;
SetServiceStatus(hStatus, &ServiceStatus);
return;
}
// WriteToLog("Service Started _2.");
// We report the running status to SCM.
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus (hStatus, &ServiceStatus);
AfxBeginThread(MTServerThread,0);
return;
}
UINT MTServerThread(LPVOID pParam)
{
WSADATA wsaData;
sockaddr_in local;
int wsaret=WSAStartup(0x101,&wsaData);
if(wsaret!=0)
{
return 0;
}
local.sin_family=AF_INET;
local.sin_addr.s_addr=INADDR_ANY;
int nPort = atoi(PORT);
local.sin_port=htons((u_short)nPort);
server=socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
{
return 0;
}
if(bind(server,(sockaddr*)&local,sizeof(local))!=0)
{
return 0;
}
if(listen(server,SOMAXCONN)!=0)
{
return 0;
}
WriteToLog("Server Started.");
SOCKET client;
sockaddr_in from;
int fromlen=sizeof(from);
WriteToLog("Server Started _ 2.");
while(true)
{
WriteToLog("Server Started _ 3.");
client=accept(server,
(struct sockaddr*)&from,&fromlen);
WriteToLog("Client Request Accepted.");
AfxBeginThread(ClientThread,(LPVOID)client);
//Sleep(3000);
}
return 0;
}
It has the problem in MTServerThread() function when it comes in to the while loop. when it waits for the client at that point it throws the exception of access violation and stops the service.
Any input will be appreciated.
Thanks ina advance
Shailesh
|
|
|
|
|
hi Shailesh,
If ur code works well as a console app and not as a service, do one thing, goto SCM, take the properties of ur service, goto log on tab and click on "Run As" option button - enter ur username and password. Because, it seems in win2003 the local system account doens't have the same set of rights as it has in 2000.
But I have noted some other issues in the code.
First of don't use AfxBeginthread in a console app, instead of this, use createthread . Use of AfxBeginthread will cause serious memory leak. chk msdn, very gud explanation is there..
Second thing, in ServiceMain in the last line there is no WaitForSingleObject call. So After u call AfxBeginthread serviceMain will terminate. i don't understand how it worked on win2000.
chk thease two things first and try again in 2003.
rgds...mil10
|
|
|
|
|
I'm a bit worried. I often use AfxBeginthread and it's the first time I hear about memory leaks while using this function. I would like to know more. Could you please provide a link or any reference ?
|
|
|
|
|
Hello Mil
Service is started now on win2003, Now i am using the createthread and waitforsingleobject. There is no memory error but now i got one more problem it is giving me the clinet Socket error from the function below. I don't know what is the problem now i did not change any part of code for client request. can u suggest me something.
UINT ClientThread(LPVOID pParam)
{
char buff[MAX_BUFFER_LENGTH];
CString cmd;
CString params;
int n;
BOOL auth=false;
SOCKET client=(SOCKET)pParam;
// send(client,buff,strlen(buff),0);
int nCounter = 0;
CString strData;
CString strFileName;
SYSTEMTIME sysTime;
while(true)
{
n=recv(client,buff,MAX_BUFFER_LENGTH,0);
if(n==SOCKET_ERROR )
{
WriteToLog("Client Socket Error");
break;
}
if(n == 0)
{
//continue;
//if no data recieve exit the loop and close the connection and Client Thread
break;
}
buff[n]=0;
params = (char*)buff;
if(nCounter == 0)
{
nCounter += n;
WriteToLog((LPSTR)(LPCTSTR)params);
GetLocalTime(&sysTime);
strFileName.Format("%s\\User%d%d%d%d%d%d%d.xml",DataFolder,sysTime.wMonth,sysTime.wDay ,sysTime.wYear ,sysTime.wHour ,sysTime.wMinute ,sysTime.wSecond ,sysTime.wMilliseconds );
if(!xmlFile.Open(strFileName,CFile::modeWrite | CFile::modeCreate,NULL))
{
errorMsg.Format("Unable to create %s file",strFileName);
WriteToLog((LPSTR)(LPCTSTR)errorMsg);
}
int nRetVal = params.Find(";",0);
if(nRetVal != -1)
{
cmd = params.Left(nRetVal);
if(n > nRetVal)
{
strData = params.Mid(nRetVal + 1);
{
LPSTR lpstr = (LPSTR)(LPCTSTR)(strData);
xmlFile.Write((PVOID)lpstr,strlen(lpstr));
}
}
}//end nRetVal
else
{
// USES_CONVERSION;
LPSTR lpstr = (LPSTR)(LPCTSTR)(params);
xmlFile.Write((PVOID)lpstr,strlen(lpstr));
}
if(params.Find(ENDXMLTAG) != -1)
{
xmlFile.Close ();
nCounter = 0;
ExecuteDosent(cmd,strFileName);
cmd.MakeUpper();
if(cmd.Compare("DRUSER"))
ExecuteInvokeBat(strFileName);
//break;
}
}//End nCounter
else
{
nCounter += n;
LPSTR lpstr = (LPSTR)(LPCTSTR)(params);
xmlFile.Write((PVOID)lpstr,strlen(lpstr));
if(params.Find(ENDXMLTAG) != -1)
{
xmlFile.Close ();
nCounter = 0;
WriteToLog((LPSTR)(LPCTSTR)params);
ExecuteDosent(cmd,strFileName);
cmd.MakeUpper();
if(cmd.Compare("DRUSER"))
ExecuteInvokeBat(strFileName);
//break;
}
}
}//end of while
closesocket(client);
return 0;
}
thanks
shailesh
|
|
|
|
|
Hello, some day, i was reading "tips and tricks for windows 98" and found a tip that says "do you know that regedit.exe runs also in dos?"
I tought "what? thats not possible!" But then i restarted in ms-dos mode and run regedit.exe. It was really running. I have already posted this problem to
this site
and i wont write it here all over again. If you vould be so kind and look at the link? It seems that they cant help me on that site. I hafe found a lot of info from when i firstly posted the question, but there is still that unanswered question: "How can i tell my compiler to build the dos stub from my code?"
THANKS, PLEASE REPLY
Sorry for my English grammar, I am from Slovakia.
By the way, if you find that you are unable to read those sentences by me, please take a look at theese pictures on my site:
The classic PE file
Regedit.exe (custom stub)
Thanks,
vilo999
|
|
|
|
|
Vilo999 wrote:
How can i tell my compiler to build the dos stub from my code?"
I'm not sure exactly what you mean by this, but you can use any DOS program as your program stub by using the "/STUB:<filename>" command line option. The program must be an .EXE file (it can't be a .COM file) and must be a pure DOS program.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
How could i forgot to check the linker options...
Thanks for your help it works perfect!
|
|
|
|
|
Vilo999 wrote:
It seems that they cant help me on that site.
Didn't you post on August 25, 2004 @ 3:34 PST that the problem was solved?
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
I am trying to use a CScrollView class in my app. I am drawing text on the view using DrawText. The problem I am having is that when I resize the window smaller, then scroll down, the text that should be at the bottom of the window doesn't appear. It's just blank. Changing the value to SetScrollSizes changes the behavior, but I can't get it to work right. Any help would be appreciated!!
|
|
|
|
|