SOLUÇÃO: Os certificados são sempre apresentados em ordem de vencimento do maior para o menor. Eu consigo ler quais os certificados estão instalados na máquina usando TElWinCertStorage. Então eu os ordeno da mesma forma e localizo a posição dele. Então quando abre a tela para selecionar, eu clico no certificado certo usando os comandos do teclado.
void __fastcall TfrmNavegador::TimerSelecionarCertificadoTimer(TObject *Sender)
{
TimerSelecionarCertificado->Enabled = false;
Application->ProcessMessages();
Sleep(1000);
if(!FindWindowW(NULL, String("Segurança do Windows").c_str()))
{
TimerSelecionarCertificado->Enabled = true;
return;
}
setLog("Selecionando certificado.");
WebBrowser1->Silent = true;
Application->ProcessMessages();
Sleep(1000);
for(int i = 0; i < getPosicaoCertificado(); i++)
{
keybd_event(VK_DOWN, 0, 0, 0);
keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
Sleep(100);
}
keybd_event(VK_RETURN, 0, 0, 0);
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
}