kloster 0 Denunciar post Postado Novembro 10, 2008 Olá Estou com dúvida na função SHFileOperation, que pede um ponteiro para a typedef struct _SHFILEOPSTRUCT . Por favor o que está errado. Estou olhando o site MSDN mas ainda não encontrei o erro. Um dúvida também é como criar o ponteiro para a struct e colocá-lo como argumento da função SHFileOperation. Obrigado. Edit:Antes só apontava o erro abaixo e agora há 31 erros por causa da shellapi.h. Por favor se alguem tiver algum exemplo de como usa a função corretamente. Obrigado. Erro do compilador DevC++: parse error before `.', linha 16. #include<stdio.h> #include<shellapi.h> char path_from[256+4]; HWND hwnd; int main() { typedef struct _SHFILEOPSTRUCT copiar; GetModuleFileNameA(NULL, path_from,sizeof(path_from)); copiar.hwnd = hwnd; // <---- linha 16 copiar.wFunc = FO_COPY; copiar.pFrom = path_from; copiar.pTo = "C:\\"; copiar.fFlags = FOF_NONCONFIRMATION; SHFileOperation(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 10, 2008 Tentou colocar um & na frente? Compartilhar este post Link para o post Compartilhar em outros sites
kloster 0 Denunciar post Postado Novembro 11, 2008 Mil desculpas mas eu queria saber na frente de quem. A desculpa é que da onde eu tirei o exemplo não fala nada sobre. Agradeço Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 11, 2008 e c aki: copiar.hwnd = hwnd;você colocar: copiar.hwnd = NULL; o erro persiste?? []'s Compartilhar este post Link para o post Compartilhar em outros sites
kloster 0 Denunciar post Postado Novembro 11, 2008 O erro persiste Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 11, 2008 tente fazer como a Isis falow: copiar.hwnd = &hwnd; bom acho q é aki q é pra por o '&' neh :lol: Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 11, 2008 Sim... Se o treco pede ponteiro = endereco de memória, então se você tem uma variável que não é ponteiro você precisa colocar o & na frente... Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 11, 2008 O que é isso: typedef struct _SHFILEOPSTRUCT copiar; ? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 11, 2008 Definição de um tipo novo. Ao invés de escrever struct __NOMEABSURDO pra declarar as coisas, você usa apenas copiar. Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 12, 2008 Ali não é uma definição de um tipo novo. Ali ele está tentando instanciar. Se ele tirar o typedef ali, ou definir o tipo novo em outro lugar e então usar o novo tipo definido para instanciar a nova variável, vai funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 12, 2008 José Enésio: ali ele está definindo tipo novo,sim. É exatamente o que a linha diz e que um compilador vai entender. Até onde eu sei, instanciação de variável não existe em C. O que existe é declaração e atribuição. Instanciação = criação de objetos de uma classe. Compartilhar este post Link para o post Compartilhar em outros sites
kloster 0 Denunciar post Postado Novembro 12, 2008 Escrevi daquele jeito pois é como está no MSDN. Segui as dicas aqui mas ainda da parse error. Ainda não encontrei pelo google um exemplo em C de como usar a função SHFileOperation. Se alguém souber. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 12, 2008 José Enésio: ali ele está definindo tipo novo,sim. É exatamente o que a linha diz e que um compilador vai entender. Até onde eu sei, instanciação de variável não existe em C. O que existe é declaração e atribuição. Instanciação = criação de objetos de uma classe. Não é a isso que estou me referindo int main() { typedef struct _SHFILEOPSTRUCT copiar; copiar.hwnd = hwnd; // <---- linha 16 copiar.wFunc = FO_COPY; O cara colocou aquilo daquele jeito e utilizou como se fosse uma instância, variável, struct, como preferir chamar, aí que está o erro do código. Novamente digo que se tirar o typedef dali ou definir um novo tipo fora do main (não sei se typedef funciona DENTRO da main, e mesmo assim acho que ficaria mais bonito fora) vai dar certo. Mas tu disse que ainda tá dando erro né? Qual erro tá dando agora? O que ele diz? Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 12, 2008 Segundo erro: SHFileOperation(); Protótipo: int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA); Logo o que você quer é: SHFileOperation(&copiar); Compartilhar este post Link para o post Compartilhar em outros sites
kloster 0 Denunciar post Postado Novembro 12, 2008 Compilou. Obrigado, as dicas ajudaram ficou assim: #include<stdio.h> #include<shellapi.h> char path_from[256+4], path_to; int main() { SHFILEOPSTRUCT copiar; GetModuleFileNameA(NULL, path_from,sizeof(path_from)); copiar.hwnd = NULL; copiar.wFunc = FO_COPY; copiar.pFrom = path_from; copiar.pTo = path_to; copiar.fFlags = FOF_NOCONFIRMATION; SHFileOperation(&copiar); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 12, 2008 Precisando estamos aqui! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 12, 2008 q bom q conseguiw. tava vendo na net esse comando, + soh achei exemplos em Delphi! []'s Compartilhar este post Link para o post Compartilhar em outros sites