Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- C/C++ (http://netadmin.ws/forum/forumdisplay.php?forumid=8)
-- Помоги написать и подключить библиотеку (http://netadmin.ws/forum/showthread.php?threadid=6822)
Помещено Artemka 15-10-2003 в 12:05:
Помоги написать и подключить библиотеку
Привет всем.
Прошу помощи написать библиотеку и подключить её к Excel через VBA чтобы по нажатию кнопки на форме
функция в библиотеке - должна удалять файлы по маске из каталога.
тип файла указывается в ячейке a1 и каталог или путь до него полный в ячейке a2
Помещено mEGaZ0Id[SE] 28-10-2003 в 09:43:
VBA - not C++.
__________________
Хочу присоединиться к какому-нибудь проекту. Пишите.
Помещено Artemka 28-10-2003 в 15:36:
Да ты что? хочешь для тебя будет новость?
quote:
Первоначальное сообщение от mEGaZ0Id[SE]
VBA - not C++.
Да ты что? тебе кто такое сказал? хочешь для тебя будет новость?
#include "stdafx.h"
#include <windows.h>
#include <string.h>
#include<math.h>
BOOL APIENTRY DllMain (
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpReserved )
{
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
//delete.cpp
extern "C" __declspec(dllexport) long __stdcall DeleteFilesByMask(char* mask, char* path)
{
WIN32_FIND_DATA fd;
HANDLE hSearch;
char* buffer = new char[1024];
ZeroMemory(buffer, 1024);
size_t plen = strlen(path);
CopyMemory(buffer, path, plen);
buffer[plen] = '\';
CopyMemory(buffer+plen+1, mask, strlen(mask));
long count = 0;
hSearch = FindFirstFile(buffer, &fd);
char* fullname = new char[1024];
if(hSearch == INVALID_HANDLE_VALUE)
{
delete buffer;
delete fullname;
return 0;
}
do
{
count++;
ZeroMemory(fullname, 1024);
CopyMemory(fullname, path, plen);
fullname[plen] = '\';
CopyMemory(fullname+plen+1, fd.cFileName, strlen(fd.cFileName));
DeleteFile(fullname);
}
while(FindNextFile(hSearch, &fd));
delete fullname;
delete buffer;
return count;
}
MyLaba.def
LIBRARY MyLabaDLL
Exports
DeleteFilesByMask
В файл Excel
Private Declare Function DeleteFilesByMask Lib "mydll.dll" Alias " _DeleteFilesByMask@8 " (ByVal mask As String, ByVal path As String) As Long
Private Sub CommandButton1_Click()
Dim removed As Long
' значения из ячеек (Cells) поставить
DeleteFilesByMask ("*.tmp", "C:\TEMP")
End Sub