begin process at 2012 05 30 03:14:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Multimédia

 > 

Lire élément X dans une playlist VLC


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lire élément X dans une playlist VLC

mardi 23 février 2010 à 11:24:27 | Lire élément X dans une playlist VLC

thejrem

Bonjour
J’ai un projet de création de télécommande wifi pour VLC sur Windows mobile et je bloque sur la partie de sélection de chaine.
Alors j’ai une playlist et j’aimerai lire l’élément X de la playlist en évitant de faire X fois programme plus.j'ai trouver via la console de l'interface telnet de VLC la commande goto X mais je n'arrive pas a l'exploité dans mon programme

[code]
WinExec("C:\\Progra~1\\VideoLAN\\VLC\\vlc.exe C:\\playlist.m3u --extraintf rc --telnet-port 6666 --telnet-password admin",1);//lance ma playlist avec vlc, mon interface console et le serveur telnet
[/code]

avez vous une idée comment exploiter la fenetre console de VLC pour lancé des goto X

dimanche 28 février 2010 à 12:02:37 | Re : Lire élément X dans une playlist VLC

rt15

Membre Club Administrateur CodeS-SourceS
Bienvenue,

(Je précise que je n'ai jamais codé pour windows mobile, le code ci-dessous est pour PC, mais bon, il devrait aller aussi).

WinExec est obsolète. Utiliser CreateProcess à la place.

Concernant ton problème, il est relativement classique.
Voilà un début de piste. Ce programme lance :
cmd /C set /P a= && echo %a%

Ce qui demande à l'utilisateur de donner une valeur pour a, puis affiche la valeur donnée. Mais ce n'est pas l'utilisateur qui va donner a, mais notre programme.
Tout se fait à l'aide de "pipes". Ils permettent d'envoyer des caractères à une console et de lire les valeurs retournées.

Application console. Pour compiler sous gcc, ajouter -nostartfiles -nodefaultlibs -nostdlib -ffreestanding dans les options du lieur.
Pour compiler sous VC, s'arranger pour que le lieur ignore toutes les librairies par défaut (/nodefaultlib).
Sous VC, en cas d'erreur LNK2001 : __chkesp symbole externe non résolu -> Enlever /GZ des options de compilation
Code C/C++ :
#define UNICODE

#include <windows.h>

#ifdef UNICODE
#define _T(x) L ## x
typedef unsigned short TCHAR;
#else
#define _T(x) x
typedef char TCHAR;
#endif

DWORD __stdcall Err_ShowLast(TCHAR* lpTitle)
{
  DWORD nLastError;
  LPTSTR lpMessageBuffer;

  nLastError = GetLastError();

  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
                NULL, nLastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                (void*)&lpMessageBuffer, 0, NULL);

  MessageBox(NULL, lpMessageBuffer, lpTitle, MB_OK | MB_ICONERROR);

   LocalFree(lpMessageBuffer);
  return nLastError;
}

void* __stdcall Mem_Set(void* lpArea, BYTE nValue, DWORD nSize)
{
  BYTE* lpByteArea;
  DWORD nI;

  lpByteArea = (BYTE*)lpArea;
  for (nI = 0; nI < nSize; nI++)
    lpByteArea[nI] = nValue;
  return lpArea;
}

DWORD __stdcall ReadPipe(HANDLE hPipe)
{
  HANDLE hOutput;
  char lpBuffer[512];
  DWORD nBytesRead;
  DWORD nBytesWritten;

  hOutput = GetStdHandle(STD_OUTPUT_HANDLE);

  while (ReadFile(hPipe, lpBuffer, 512, &nBytesRead, NULL) && nBytesRead)
    WriteFile(hOutput, lpBuffer, nBytesRead, &nBytesWritten, NULL);

  return 0;
}

int __cdecl mainCRTStartup()
{
  SECURITY_ATTRIBUTES securityAttribs;
  HANDLE hPipeInputRead;
  HANDLE hPipeInputWrite;
  HANDLE hPipeOutputRead;
  HANDLE hPipeOutputWrite;
  STARTUPINFO startupInfo;
  PROCESS_INFORMATION processInfo;
  TCHAR lpCommandLine[512];         /* Le paramètre lpCommandLine de CreateProcessW ne doit pas être read-only */
  HANDLE hReadPipe;
  DWORD nBytesWritten;
  DWORD nResult;

  nResult = 1;

  /* Création des pipes de lecture et d'écriture */
  securityAttribs.nLength = sizeof(securityAttribs);
  securityAttribs.lpSecurityDescriptor = NULL;
  securityAttribs.bInheritHandle = TRUE;
  if (! CreatePipe(&hPipeInputRead,  &hPipeInputWrite,  &securityAttribs, 0))
  {
    Err_ShowLast(_T("Cannot create input pipe"));
    goto the_end;
  }
  if (! CreatePipe(&hPipeOutputRead, &hPipeOutputWrite, &securityAttribs, 0))
  {
    Err_ShowLast(_T("Cannot create output pipe"));
    goto close_input_pipe;
  }

  /* Préparation des infos de lancement du processus avec pipe et affichage de la fenêtre */
  Mem_Set(&startupInfo, 0, sizeof(startupInfo));
  startupInfo.cb = sizeof(startupInfo);
  startupInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
  startupInfo.wShowWindow = SW_SHOW;
  startupInfo.hStdInput = hPipeInputRead;
  startupInfo.hStdOutput = hPipeOutputWrite;
  startupInfo.hStdError = hPipeOutputWrite;

  /* Lancement du processus */
  lstrcpy(lpCommandLine, _T("cmd /C set /P a= && echo %a%"));
  if (! CreateProcess(NULL, lpCommandLine, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &startupInfo, &processInfo))
  {
    Err_ShowLast(_T("Cannot create process"));
    goto close_output_pipe;
  }

  /* Lancement du thread de lecture du pipe */
  hReadPipe = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&ReadPipe, hPipeOutputRead, 0, NULL);
  if (! hReadPipe)
  {
    Err_ShowLast(_T("Cannot create thread"));
    goto close_process;
  }

  /* Envoie d'une valeure pour a */
  WriteFile(hPipeInputWrite, "toto\n", 5, &nBytesWritten, NULL);

  WaitForSingleObject(processInfo.hProcess, INFINITE);

  nResult = 0;

  CloseHandle(hReadPipe);
close_process:
  CloseHandle(processInfo.hThread);
  CloseHandle(processInfo.hProcess);
close_output_pipe:
  CloseHandle(hPipeInputRead);
  CloseHandle(hPipeInputWrite);
close_input_pipe:
  CloseHandle(hPipeOutputWrite);
  CloseHandle(hPipeOutputRead); 
the_end:
  ExitProcess(nResult);
  return 0;
}

dimanche 28 février 2010 à 12:09:25 | Re : Lire élément X dans une playlist VLC

rt15

Membre Club Administrateur CodeS-SourceS
Donc dans ton cas, cela servirait à lancer telnet (Le client) pour qu'il se connecte sur VLC et à lui faire envoyer les goto X.

Mais bon en pratique, ça à l'air un peu plus compliqué de travailler avec telnet qu'avec set /P.
dimanche 28 février 2010 à 12:24:41 | Re : Lire élément X dans une playlist VLC

rt15

Membre Club Administrateur CodeS-SourceS
Marche aussi avec ftp ->
Code C/C++ :
lstrcpy(lpCommandLine, _T("ftp"));
...
WriteFile(hPipeInputWrite, "help\nquit\n", 10, &nBytesWritten, NULL);

Y a vraiment un souci avec telnet.
dimanche 28 février 2010 à 12:40:57 | Re : Lire élément X dans une playlist VLC

rt15

Membre Club Administrateur CodeS-SourceS
Bon bin je n'ai pas trouvé le problème...

Par contre, autre approche, faire directement le client telnet adapté à VLC. Un peu comme ça.
mardi 16 mars 2010 à 14:13:49 | Re : Lire élément X dans une playlist VLC

thejrem

merci pour ces reponses, le client telnet de vlc est galere et ne me permet de faire goto X
mais je suis sur ton code et le compilateur de visual studio me met deux erreurs (void*)&lpMessageBuffer et j'ai mis en commentaire la ligne //typedef unsigned short TCHAR; puis la j'ai l'erreur de lnk 1120 et lnk 2001 peut tu m'expliquer comment mettre l'option /GZ dans le compilateur de visual sutudio
merci
mardi 16 mars 2010 à 14:26:31 | Re : Lire élément X dans une playlist VLC

rt15

Membre Club Administrateur CodeS-SourceS
Pour la 2001, il ne faut pas mettre l'option /GZ, il faut l'enlever. Si tu es sur VC6, c'est dans "Settings" du projet, onglet C/C++, il suffit de la retirer dans "Project Options".

Pour la 1120, il aurait fallut me donner les symboles non trouvés. Mais a priori, il faut que tu ajoutes au moins kernel32.lib et user32.lib en entrée du lieur. "Objects/Library modules" de l'onglet link sous VC6.
mercredi 17 mars 2010 à 12:14:33 | Re : Lire élément X dans une playlist VLC

thejrem

j'ai toujours une erreur il me dit
Erreur 3 Ligne de commande error D8016 : options de ligne de commande '/O2' et '/GZ' non compatibles
et /o2 est grisé on ne peut le modifer !
a tu une solution ?
mercredi 17 mars 2010 à 16:04:57 | Re : Lire élément X dans une playlist VLC

rt15

Membre Club Administrateur CodeS-SourceS
/O2 est une option d'optimisation. Tu dois pouvoir régler le niveau d'optimisation quelque part dans les options.

Mais encore une fois, pour compiler, il faut enlever /GZ, pas le mettre.
mercredi 17 mars 2010 à 16:14:40 | Re : Lire élément X dans une playlist VLC

thejrem

euh il y est pas alors !

1 2

Cette discussion est classée dans : élément, lire, telnet, playlist, vlc


Répondre à ce message

Sujets en rapport avec ce message

Accéder aux données d'une carte flash [ par Yoy ] Je souhaite pouvoir lire les données d'une carte flash insérée dans un connecteur PCMCIA d'un portable.La carte flash contient des données qui ne sont Pointeur qui fait planter Windows !!! [ par coyito ] Salutquand je défini moi même une addresse pour un pointeur (exemple pour lire n'importe ou dans la mémoire) j'ai une erreur windows "access violation Les Menus [ par Watermelon ] Comment griser un élément d'un menu sur VC++?J'ai bien essayé avec EnableMenuItem de la class CMenu, mais rien ne se passe (pourtant je pointe sur le Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl Lire dans la base de registre en C++ [ par chris ] BonjourJe recherche un petit programme C++ qui me permette de lire dans la base de registre.Merci pour votre aide. Problème pour lire les fichiers audio dans un programme C++ [ par Nicolas ] Pour un projet C++ (linéaire),il souhaiterais réalisé une bibliothèque musical(.mp3, .wav). J'aurais besoin pour ca de lire les fichiers audio mais je Poblèmes pour lire un fichier audio dans un programme C++ [ par Nicolas ] Pour un projet C++ (linéaire),il souhaiterais réalisé une bibliothèque musical(.mp3, .wav). J'aurais besoin pour ca de lire les fichiers audio mais je Lire la taille d'un fichier avec la DTA [ par metman ] Comment pouvons-nous avoir la taille d'un fichier a partir des octets 26 27 28 29 de la DTA ?Intéruption 21hfonction 4foctect 26 - 27 = mot faible de C++ Builder et Telnet [ par Sylvain ] bonjour,je fais une petite appli en c++ builder ou j'ai 1 client FTP et un client Telnet.Pour le premier, aucun pb, j'utilise TNMFTP mais, je n'arrive MP3 [ par Berserk666 ] Bonjourchui arrivé a lire des MP3 avec mciSendString, mais tjs avec cette méthode,je cherche comment savoir qd unMP3 est fini de lire ?Merci @+


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales