|
Is this good?
<br />
WIN32_FIND_DATA find; <br />
SetCurrentDirectory("c:\\temp"); <br />
HANDLE handle=FindFirstFile("*.mdb",&find);<br />
while(FindNextFile(handle,&find)!=0)<br />
DeleteFile(find.cFileName);<br />
FindClose(handle);<br />
or you can use from
|
|
|
|
|
Because you do findfirst() and findnext() before you do DeleteFile(), I think this will leave one mdb file behind.
|
|
|
|
|
No problem we can use from a Do while and yes its right.
<br />
WIN32_FIND_DATA find; <br />
SetCurrentDirectory("c:\\temp"); <br />
HANDLE handle=FindFirstFile("*.mdb",&find);<br />
do<br />
DeleteFile(find.cFileName);
while(FindNextFile(handle,&find)!=0);<br />
FindClose(handle);<br />
|
|
|
|
|
This is the program that I tried.
#include "afxdisp.h"
void main()
{
WIN32_FIND_DATA find;
char aExePath[_MAX_PATH];
char aDrive[_MAX_DRIVE];
char aDir[_MAX_DIR];
CString aPath;
::GetModuleFileName( AfxGetInstanceHandle(),aExePath,sizeof(aExePath));
_splitpath(aExePath,aDrive,aDir,NULL,NULL);
aPath.Format("%s%s",aDrive,aDir);
aPath = aPath + "sbh_store";
SetCurrentDirectory(aPath);
HANDLE handle=FindFirstFile("*.mdb",&find);
do
DeleteFile(find.cFileName);
while(FindNextFile(handle,&find)!=0);
FindClose(handle);
}
Here I get the error
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
When I comment out
CString aPath;<br />
::GetModuleFileName( AfxGetInstanceHandle(),aExePath,sizeof(aExePath));
I do not get the unresolved external symbol error. I guess I am missing something.
Please can you tell me what I am not doing right. Have I missed out a header?
-- modified at 5:40 Friday 18th August, 2006
Fortitudine Vincimus!
|
|
|
|
|
|
Ah! How did I miss it.
Thanks a billion!
Fortitudine Vincimus!
|
|
|
|
|
|
Yes. Changing the settings helped.
But there is something I do not understand.
I used
::GetModuleFileName( AfxGetInstanceHandle(),aExePath,sizeof(aExePath));
in my application using mfc. There I had no problem.
But in the C++ program that I wrote to delete files form a folder, AfxGetInstanceHandle() was causing assersion failure. I could'nt figure out why.
When I changed it to NULL
>::GetModuleFileName( NULL,aExePath,sizeof(aExePath));
it worked fine.
Why?
Fortitudine Vincimus!
|
|
|
|
|
|
is it safe(shell API have some dependency on the version?) to use shell API, if we there are some other win32 APi to do the same task?
is it faster than Win32 APIs?
|
|
|
|
|
According to my experience, it's risky to do changes in a directory structure while doing a FindFirst/Findnext loop. I have had problems doing that (such as deleting the found files) in the past.
IMO, ShFileOperation is safer, and I would use it.
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
I tried using SHFileOperation. But the program is crashing.
This is what I did:
SHFILEOPSTRUCT del;
del.hwnd = NULL;
del.wFunc = FO_DELETE;
del.pFrom = "C:\\temp\\*.mdb";
del.fFlags = FOF_FILESONLY;
SHFileOperation(&del);
Something is wrong here. I tried searching the net, but I am not able to figure it out. Please can you help me.
Thanks.
Fortitudine Vincimus!
|
|
|
|
|
you need to set del.pTo ,too.
i.e.
set it to NULL if you are not using it.
code will be,
SHFILEOPSTRUCT del;
del.hwnd = NULL;
del.wFunc = FO_DELETE;
del.pFrom = "C:\\temp\\*.mdb";
del.fFlags = FOF_FILESONLY;
del.pTo = NULL;
SHFileOperation(&del);
Oh ! you got it right already.
-- modified at 5:59 Friday 18th August, 2006
|
|
|
|
|
OH! I got it!!
The pTo member of the
SHFILEOPSTRUCT<br /> structure shoud be assigned NULL!
Thanks.
Fortitudine Vincimus!
|
|
|
|
|
hi,
i don't want to give you an answer, instead i would like to ask about how you can make your app create an mdb file. because this is what i trying to do right now. if you don't mind, would you share me you little secret?
thanks in advance.
cheers
-- modified at 10:25 Friday 18th August, 2006
|
|
|
|
|
Hello,
I use DAO to make the connection. There are some really nice samples that come in msdn. I wrote my own little class to do the stuff taking help from the samples.
Here is the database creation part. My database needed to be locked with a password.
void CDBcreate::CreateDatabase(CString m_strDBName)
{
int dwOptions =0;
dwOptions |=dbVersion30;
if (m_pTableDef)
{
m_pTableDef->Close();
delete m_pTableDef;
m_pTableDef = NULL;
}
if (m_pDatabase)
{
m_pDatabase->Close();
delete m_pDatabase;
m_pDatabase=NULL;
}
m_pDatabase = new CDaoDatabase;
m_pDatabase->Create(m_strDBName, dbLangGeneral,dwOptions);
CString strConnect( _T( ";pwd=" ) );
COleVariant NewPassword( "password", VT_BSTRT ),OldPassword( "", VT_BSTRT );
DAO_CHECK( m_pDatabase->m_pDAODatabase->NewPassword( V_BSTR( &OldPassword ),
V_BSTR( &NewPassword ) ) );
m_bOpen=TRUE;
}
Fortitudine Vincimus!
|
|
|
|
|
Hi,
What is an array in VC++? Is it a class? Lets say I create an array of ints with int i[20] , then does it mean that objects of a hidden array class is created? What actually is an array? And is there a Dynamic array implementation in the std namespace?
---
Hakuna-Matada
It means no worries for the rest of your days...
It's our problem free, Philosophy
<marquee behavior="alternate" scrollamount="5" scrolldelay="50">
|
|
|
|
|
Hakuna-Matada wrote: What actually is an array?
An array is a collection of similar datatypes that are stored in contiguous memory locations.
Hakuna-Matada wrote: array class
The array is not a class. It's just a collection of object/datatypes.
If it would have been a class you would be able to create an object of that class and then you could iterate through the elements of the array using that (objectvalue.something)
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
|
Now, some files exist that look like service dll or driver,
however, I want to directly delete them under windows(non safe mode), any ideas?
this need to use Hook or interception techinic?
|
|
|
|
|
normally the services are removed after stopping them. I donno more about drives
|
|
|
|
|
|
how can I forbid the user to use print function.
Is there any suggestions? I find it's no use to forbid printer like forbid a floppy.thanks.
|
|
|
|
|
How do you mean ? If your app doesn't offer printing, it can't print. Or do you mean print screen ?
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
In my program I want to control other programs to use printer,I want to forbit the other programs' print function.that's what I want.Would you
give me some advices?
|
|
|
|