C:¥Documents and Settings¥anonymous>mkdir ¥removetag C:¥Documents and Settings¥anonymous>cd ¥removetag C:¥removescript>notepad removetag.c C:¥removescript>gcc -mno-cygwin -mwindows -o removetag removetag.c C:¥removescript>ls removetag.c removetag.exe C:¥removescript>explorer.exe . C:¥removescript> |
「スタート」ボタン → |
名前(O): フィールドに半角で「sendto」と入力する |
プログラムのあるウインドウで、対象プログラムのアイコン上にマウスカーサーを移動させて、 右クリックしポップアックメニューを開き、コピーを選択する。 |
SendTo のウインドウの背景部(白い部分)で、マウスを右クリックしポップアップメニューを開き、 ショートカットの貼り付けを選択する。 |
SendTo に プログラムのシュートカットが作成されましたので、マウスの右クリックから アプリケーションの起動が可能になりました。 必要にあわせて、名前を変更します。 |
#include
<stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <sys/types.h> #include <sys/stat.h> // gcc -mno-cygwin -mwindows -o removetag removetag.c // gcc -mno-cygwin -o removetag removetag.c #define TAG_MAX_SIZE 2048 #define TOKEN_MAX_SIZE 512 #define FAVOR 1 #define NOFAVOR (!FAVOR) int link_print_flag = FAVOR ; unsigned char *buffer ; struct stat fileInfo; unsigned char getToken(unsigned char *buff, unsigned char *token, int n) { register int i, c ; for( i=0, *token='¥0'; (c=*(buff+i)) != '¥0' && i<=n; i++ ) { if( c != ' ' && c != '>'&& c != '¥r' && c != '¥n' ) { *(token+i) = tolower(c) ; *(token+i+1) = '¥0' ; } else return(c) ; } } int seekEndToken(unsigned char *buff, unsigned char *token) { unsigned char tkn[TOKEN_MAX_SIZE] ; register int i, c ; for( i=1; (c=*(buff+i)) != '¥0'; i++ ) { if ( c == '<' ) { getToken((buff+i), tkn, strlen(token)) ; strcat( tkn, ">") ; if( strcmp( token, tkn ) == 0 ) { return( i + strlen(token) -1 ) ; } } } return( i ) ; } unsigned char *checkStringsInTag(unsigned char *tag, unsigned char *strings) { unsigned char lowercase[TAG_MAX_SIZE] ; register int i, length = (TAG_MAX_SIZE -1) > strlen(tag) ? strlen(tag) : TAG_MAX_SIZE -1 ; for( i=0; i<length; i++ ) { lowercase[i] = tolower(*(tag +i)) ; lowercase[i+1] = '¥0'; } return( strstr(lowercase, strings) ) ; } int linkTagOperation(unsigned char *buff, int size, int flag, FILE *fpo) { unsigned char link[TAG_MAX_SIZE] ; register int i, j ; link[0] = '¥0' ; for(i=j=0; *(buff+i) != '>' && *(buff+i) != '¥0' && !(j>0 && *(buff+i)=='<'); i++) { if( j < TAG_MAX_SIZE -3 ) { link[j] = *(buff+i); link[j+1] = '>'; link[j+2] = '¥0'; j++; } } if( *(buff+i) == '<' || *(buff+i) == '¥0' ) { fprintf( stderr, "Bad file format!¥n" ); if( *(buff+i) == '¥0' ) { exit(1); } } else if( checkStringsInTag(link, "http") == NULL && flag == FAVOR) { fprintf( fpo, "%s", link ) ; } return( i ) ; } execution(unsigned char *buff, int size, FILE *fpo) { unsigned char token[TOKEN_MAX_SIZE], link[TAG_MAX_SIZE] ; register int i, j ; for( i=0; i<size; i++ ) { if( *(buff+i) == '<' && *(buff+i+1) != '/' ) { getToken((buff+i), token, sizeof(token)-1) ; if( strcmp( token, "<script") == 0 ) { i += seekEndToken( (buff+i), "</script>") ; } else if( strcmp( token, "<noscript") == 0 ) { i += seekEndToken( (buff+i), "</noscript>") ; } else if( strcmp( token, "<iframe") == 0 ) { i += seekEndToken( (buff+i), "</iframe>") ; } else if( strcmp( token, "<link") == 0 ) { i += linkTagOperation( buff+i, size -i+1, link_print_flag, fpo ) ; } else fputc( *(buff+i), fpo ) ; } else fputc( *(buff+i), fpo ) ; } } read_data(unsigned char *buff, int size, FILE *fpi) { register int i, c ; for( i=0; i<size ; i++ ) { if((c=fgetc(fpi)) == EOF ) { fprintf( stderr, "Unexpected EOF was found.¥n" ); } else *(buff+i) = c ; } *(buff+size) = '¥0' ; } main( int argc, char *argv[]) { FILE *fpi, *fpo ; register int data_size = 0 ; if( argc != 2 ) { fprintf( stderr, "usage: %s html_file¥n", argv[0] ); exit( 1 ) ; } else if( (fpi=fopen(argv[1],"rb")) == NULL ) { fprintf( stderr, "File '%s' open error!¥n", argv[1] ); exit( 1 ) ; } if ( fstat(fileno(fpi), &fileInfo) != 0 ) { fprintf( stderr, "fstat failed!¥n" ); exit( 1 ) ; } else data_size = fileInfo.st_size ; buffer = (unsigned char *)malloc(data_size +1) ; if(buffer == NULL) { fprintf( stderr, "Could not allocate memory!¥n" ); exit( 1 ) ; } else read_data(buffer, data_size, fpi) ; fclose(fpi) ; if((fpo=fopen(argv[1],"wb")) == NULL ) { fprintf( stderr, "File '%s' open error!", argv[1] ); exit( 1 ) ; } else execution(buffer, data_size, fpo); fclose(fpo) ; free(buffer); return 0 ; } |
go to TopPage | go to CategoryTop |