| -
#include<windows.h>
-
#include<dos.h>
-
#include<dir.h>
-
#include<fstream.h>
-
#include<stdio.h>
-
#include<process.h>
-
-
#include"resource.h" //resource header file
-
-
-
long convert(char *pass) //to convert password in to long integer
-
{
-
long total=0;
-
for(int i=0;i<strlen(pass);i++)
-
{
-
total+=pass[i];
-
}
-
total=total;
-
return(total);
-
}
-
-
-
int check(char *p) // to check if the path entered is a file or directory
-
{
-
int done;
-
struct ffblk ffblk;
-
done=findfirst(p,&ffblk,0);
-
while(!done)
-
{
-
if(ffblk.ff_attrib&&FA_DIREC) //returns 1 if its a directory
-
return(1);
-
done=findnext(&ffblk);
-
}
-
return(0);
-
}
-
-
int encode(char *path,int op,char *pass) //fuction to encode file
-
{
-
long password=0;
-
int done;
-
char ch;
-
double ctr;
-
ifstream fin;
-
ofstream fout;
-
struct ffblk ffblk;
-
switch(op)
-
{
-
case 0:ctr=0;
-
password=convert(pass);
-
fin.open(path,ios::in|ios::binary);
-
fout.open(path,ios::out|ios::ate|ios::nocreate|ios::binary);
-
if(!fin||!fout) //place where something goes wrong I think
-
return(-1);
-
while(!fin.eof())
-
{
-
fin.seekg(ctr);
-
fin.get(ch); //reading each character
-
if(fin.eof())
-
break;
-
ch=int(ch+password); //adding some value to character(encoding)
-
fout.seekp(ctr);
-
fout.put(ch);
-
ctr++;
-
}
-
fout.flush();
-
fin.close();
-
fout.close();
-
break;
-
-
case 1:chdir(path); //changing directory if the entere path is a folder
-
done=findfirst("*.*",&ffblk,0); //searching every file
-
while(!done)
-
{
-
encode(ffblk.ff_name,0,pass);
-
done=findnext(&ffblk);
-
}
-
break;
-
default:return(-1);
-
}
-
return(0);
-
}
-
-
int decode(char *path,int op,char *pass) //to decode file:similar to encode
-
{
-
long password=0;
-
int done;
-
char ch;
-
double ctr;
-
ifstream fin;
-
ofstream fout;
-
struct ffblk ffblk;
-
if(op==-1)
-
return(-1);
-
switch(op)
-
{
-
case 0:ctr=0;
-
password=convert(pass);
-
fin.open(path,ios::in|ios::binary);
-
fout.open(path,ios::out|ios::ate|ios::nocreate|ios::binary);
-
if(!fout||!fin)
-
return(-1);
-
while(!fin.eof())
-
{
-
fin.seekg(ctr);
-
fin.get(ch);
-
if(fin.eof())
-
break;
-
ch=ch-int(password);
-
fout.seekp(ctr);
-
fout.put(ch);
-
ctr++;
-
}
-
fout.flush();
-
fin.close();
-
fout.close();
-
break;
-
case 1:chdir(path);
-
done=findfirst("*.*",&ffblk,0);
-
while(!done)
-
{
-
decode(ffblk.ff_name,0,pass);
-
done=findnext(&ffblk);
-
}
-
break;
-
}
-
return(0);
-
}
-
-
-
//No problem here I think.Here's where the dialog box stuff go
-
-
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
-
{
-
switch(msg)
-
{
-
case WM_INITDIALOG:SetDlgItemText(hwnd,IDC_TEXT_I,"");
-
SetDlgItemText(hwnd,IDC_TEXT_II,"");
-
break;
-
case WM_COMMAND :
-
switch(LOWORD(wParam))
-
{
-
case IDC_ENCODE:{
-
int len1=GetWindowTextLength(GetDlgItem(hwnd,IDC_TEXT_I));
-
int len2=GetWindowTextLength(GetDlgItem(hwnd,IDC_TEXT_II));
-
if(len1>0&&len2>0)
-
{
-
char *buf1,*buf2;
-
buf1=(char*)GlobalAlloc(GPTR,len1+1);
-
buf2=(char*)GlobalAlloc(GPTR,len2+1);
-
GetDlgItemText(hwnd,IDC_TEXT_I,buf1,len1+1);
-
GetDlgItemText(hwnd,IDC_TEXT_II,buf2,len2+1);
-
int i=check(buf1);
-
int e=encode(buf1,i,buf2);
-
if(e==0)
-
{
-
MessageBox(hwnd,"ENCODING COMPLETED","REPORT",MB_OK|MB_ICONINFORMATION);
-
SetDlgItemText(hwnd,IDC_TEXT_I,"");
-
SetDlgItemText(hwnd,IDC_TEXT_II,"");
-
}
-
else if(e==-1)
-
{
-
MessageBox(hwnd,"ERROR IN ENCODING PROCESS","REPORT",MB_OK|MB_ICONEXCLAMATION);//This shows up as error
-
-
}
-
GlobalFree((HWND)buf1);
-
GlobalFree((HWND)buf2);
-
}
-
else
-
{
-
MessageBox(hwnd,"PARAMETER(S) MISSING","WARNING",MB_OK|MB_ICONEXCLAMATION);
-
}}
-
break;
-
case IDC_DECODE:{
-
int len1=GetWindowTextLength(GetDlgItem(hwnd,IDC_TEXT_I));
-
int len2=GetWindowTextLength(GetDlgItem(hwnd,IDC_TEXT_II));
-
if(len1>0&&len2>0)
-
{
-
char *buf1,*buf2;
-
buf1=(char*)GlobalAlloc(GPTR,len1+1);
-
buf2=(char*)GlobalAlloc(GPTR,len2+1);
-
GetDlgItemText(hwnd,IDC_TEXT_I,buf1,len1+1);
-
GetDlgItemText(hwnd,IDC_TEXT_II,buf2,len2+1);
-
int i=check(buf1);
-
int e=decode(buf1,i,buf2);
-
if(e==0)
-
{
-
MessageBox(hwnd,"ENCODING COMPLETED","REPORT",MB_OK|MB_ICONINFORMATION);
-
SetDlgItemText(hwnd,IDC_TEXT_I,"");
-
SetDlgItemText(hwnd,IDC_TEXT_II,"");
-
}
-
else if(e==-1)
-
{
-
MessageBox(hwnd,"ERROR IN DECODING PROCESS","REPORT",MB_OK|MB_ICONEXCLAMATION);//This shows up as error
-
}
-
GlobalFree((HWND)buf1);
-
GlobalFree((HWND)buf2);
-
}
-
else
-
{
-
MessageBox(hwnd,"PARAMETER(S) MISSING","WARNING",MB_OK|MB_ICONEXCLAMATION);
-
}}
-
break;
-
case IDC_about:MessageBox(hwnd,"FE for WINDOWS\r\n -by- \r\nRAHUL.ES\r\nCreated:18-2-07\r\nContact:es_rahul@yahoo.co.in","ABOUT",MB_ICONINFORMATION|MB_OK);
-
break;
-
}
-
break;
-
case WM_CLOSE : EndDialog(hwnd,0);
-
break;
-
default : return FALSE;
-
}
-
return TRUE;
-
}
-
-
-
//WinMain
-
-
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
-
{
-
HICON hMyIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYICON));
-
-
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc)
-
;
-
}
-
-
The above program is a simple program using WinApi to encode and decode files.But every time I execute it,the dialog box mentioned above in the comments appear.I can't figure out how to correct the error...
Please Help.... :-)
| |